封装继承 (2)

​ 3 静态变量存在方法区中静态域中

2.3 静态代码块 代码块分为:局部代码块、动态代码块、静态代码块 局部代码块:声明在方法中的代码块,使用范围与声明位置相关, 提前释放变量。(了解) 动态代码块:又称构造代码块或实例代码块,声明在类体中的代码块,创建对象时自动执行一次,每创建一个对象就执行一次动态代码块,初始化对象。(了解) 静态代码块:使用static关键字修饰的动态代码块,在类加载时自动执行,并只执行一次,初始化类(记住) 2.4 静态导入(了解) 用import static代替import,静态导入包是JDK1.5中的新特性。 一般我们导入一个类都用:import com...ClassName;而静态导入是这样:import static com...ClassName.* ;这里的多了个static,还有就是类名ClassName后面多了个.* ,意思是导入这个类里的静态方法和属性。

静态导入前

public class Demo { public static void main(String [] args){ System.out.println(Integer.MAX_VALUE); System.out.println(Integer.toHexString(36)); } }

静态导入后

import static java.lang.System.out; import static java.lang.Integer.*; public class Demo { public static void main(String [] args){ out.println(MAX_VALUE); out.println(toHexString(36)); } }

这种方法建议在有很多重复调用的时候使用,如果仅有一到两次调用,不如直接写方便。

第四节:继承性 4.1 继承的概念

在原有类的基础上,产生一个新的类,在新的类中可以访问原有类中的非私有成员,并且可以添加一些自己独有的成员,这个过程叫做继承,简单理解一个类继承另外一个类。

4.2 继承的好处

实现代码的重用和扩展

模拟现实世界的关系

4.3 类的继承的使用

使用extends关键实现两个类的继承关系

被继承的类:父类,超类,基类

继承的类:子类,派生类

继承符合: is a 关系

4.4 语法: public class FatherClass{ //属性 //方法 } public class ChildClass extends FatherClass { //属性 //方法 }

​ 编写Person类:

​ 属性有:姓名、年龄,出生日期

​ 方法有:showInfo();

​ 编写Student类:

​ 属性有:姓名、年龄,出生日期、学校

​ 方法有:showInfo();

​ study();

​ 使用继承优化Student类。

public class Person { String name; int age; String birthday; public void showInfo() { System.out.println("姓名:"+name+" 年龄:"+age+" 出生日期:"+birthday); } } public class Student extends Person{ String school; public void study() { System.out.println(name+"好好学习天天向上"); } }

编写动物类 (名字、颜色、品种),打印方法,编写狗狗类(亲密度)和猫类(爱好)继承动物类,狗狗类和猫类都有打印信息的功能,狗狗有看家方法,猫类有玩球方法。

Animal类

package com.qf.day09_2; /** * 动物类 * (名字、颜色、品种),打印方法 * @author wgy * */ public class Animal { //昵称 String name; //颜色 String color; //品种 String strain; //打印信息 public void print() { System.out.println("动物信息: 昵称:"+name+" 颜色:"+color+" 品种:"+strain) ; } }

Dog类

package com.qf.day09_2; /** * 狗狗类 * @author wgy * */ public class Dog extends Animal{ //亲密度 int love; public void lookHome() { System.out.println(name+" 正在给主人看家..........."); } }

Cat类

package com.qf.day09_2; /** * 猫类 * @author wgy * */ public class Cat extends Animal{ //爱好 String hobby; /** * 玩球 * */ public void playBall() { System.out.println(name+"正在玩球.........."); } } 4.5 子类对象实例化过程

1 先实例化父类对象

默认调用父类默认构造方法

2 再实例化子类对象

4.6 不能被子类继承的成员:

1)私有成员:私有成员不能被子类继承
2)构造方法:父类中的构造方法不能被子类继承,但是会在子类的构造方法中调用(子类的构造方法中默认第一条语句是调用父类的默认构造方法)

4.7 继承的特点

1)单继承:一个子类只能有一个父类,一个父类可以有多个子类
2)传递性:继承具有传递性

第五节:super关键字 5.1 super关键字:用法和this类似

this 表示当前对象的引用。

this用法:

​ 用法1:调用本类的属性,可以解决成员变量名和局部变量名同名问题。

​ this.属性名

​ 用法2:调用本类的方法

​ this.方法名

​ 用法3 :调用本类中其他的构造方法。

​ this(参数);

​ 注意:1只能用在构造方法中,必须是第一条语句

​ 2只能调用一次

5.2 super的概念

super表示当前父类对象的引用。

5.3 super的使用规则

1)super.属性:表示访问父类中的属性,当子类中定义了与父类同名的属性时,若想在子类中访问父类的同名属性,需要使用super.属性访问

2)super.方法:表示调用父类中的方法,在子类中需要调用父类中没有被重写的方法时,需要使用super.方法调用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsspxp.html