Java
继承
1、子类的特点
- 子类中可以有父类的内容
- 子类还可以有自己特有的内容
2、在子类方法中访问一个变量
- 1、首先在子类局部范围内找
- 2、没有就在子类成员范围找
- 3、再没有就在父类范围中找
- 4、如果都没有就报错(不考虑父亲的父亲)
3、 super
public class Fu {
public int age = 40;
}
public class Zi extends Fu{
public int age = 20;
public void show(){
int age = 30;
System.out.println(age);
//如果访问本类的成员变量age,怎么办呢?
System.out.println(this.age);
//访问父类的成员变量age,怎么办呢?
System.out.println(super.age);
}
}
public class Demo {
//测试类
public static void main(String[] args) {
Zi z= new Zi();
z.show();
}
}
4、继承中构造方法的访问特点
public class Fu {
public Fu(){
System.out.println("Fu中无参构造方法被调用");
}
public Fu(int age){
System.out.println("Fu中有参构造方法被调用");
}
}
public class Zi extends Fu{
public Zi(){
//默认有super()
//super();
System.out.println("Zi中无参构造方法被调用");
}
public Zi(int age){
//默认有super()
//super();
System.out.println("Zi中有参构造方法被调用");
}
}
public class Demo {
public static void main(String[] args){
Zi Z = new Zi();
Zi z2 = new Zi(20);
}
}
1、为什么子类的构造方法默认都会访问父类中的无参的构造方法?
2、如果父类中没有无参构造方法,只有带参构造方法,怎么办呢?
5、 继承中成员方法访问的特点
public class Fu {
public void show(){
System.out.println("Fu中的show方法被调用");
}
}
public class Zi extends Fu{
public void method(){
System.out.println("Zi中的method方法被调用");
}
public void show(){
super.show();//调用父类中的show方法
System.out.println("Zi中的show方法被调用");
}
}
public class Demo {
public static void main(String[] args) {
Zi z = new Zi();
z.method();
z.show();
}
}
1、特点
6、方法重写
public class Phone {
public void call(String name) {
System.out.println("给" + name + "打电话");
}
}
public class NewPhone extends Phone{
@Override//检查重写父类方法的正确性
public void call(String name) {
System.out.println("开启视频功能");
//System.out.println("给" + name + "打电话");
super.call(name);
}
}
//测试类
public class PhoneDemo {
public static void main(String[] args) {
Phone p = new Phone();
p.call("周杰伦");
System.out.println("--------");
NewPhone np = new NewPhone();
np.call("周杰伦");
}
}
1、方法重写的概述
- 子类中出现了和父类一模一样的方法声明
2、方法重写的应用
3、@Override
- 一个注解
- 可以帮助我们检查重写方法的方法声明的正确性
7、方法重写的注意事项
8、继承的注意事项
包(package)
导包import
package 导包import1;
public class Teacher {
public void Teach(){
System.out.println("教书育人");
}
}
package 导包import2;
import 导包import1.Teacher;//导包
public class Demo {
public static void main(String[] args) {
Teacher t = new Teacher();
t.Teach();
}
}
权限修饰符
状态修饰符
1、final
2、final修饰局部变量
3、static
package 状态修饰符static;
public class Information {
public String name;
public int age;
public static String school;
public void show(){
System.out.println(name+','+age+','+school);
}
}
package 状态修饰符static;
public class Demo {
public static void main(String[] args) {
Information.school = "juxty";
Information I = new Information();
I.name = "周杰伦";
I.age = 30;
I.show();
Information I2 = new Information();
I2.name = "周";
I2.age = 50;
I2.show();
}
}
4、static访问特点
this
package 关键字this;
public class Student {
private String name;
private int age;
// public void setName(String n) {
// name = n;
// }
public void setName(String name) {
this.name = name;//后面一个为局部变量
}
public String getName() {
return name;
}
// public void setAge(int a) {
// age = a;
// }
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + ',' + age);
}
}
package 关键字this;
public class Demo {
public static void main(String[] args) {
Student s = new Student();
s.setName("周杰伦");
s.setAge(39);
s.show();
}
}
封装