详述:Java继承与重写
Java重写以代码加注释的形式
我以elcipse为例,在eclipse中建立Java project一个项目,然后创建两个类,一个person类,一个student类。
package jicheng;
//public final class person { 如果加了final修饰,则该类是无法被继承的
// String sex;
// String name;
// String address;
//
// public void eat() {
// System.out.println("XXXXXXX");
// }
//
//}
public class person { //如果没有写父类,默认是object的子类,也就是说,object是所有类的父类
String sex; //子类可以继承父类的属性与方法,但是如果该属性或者方法若被private修饰,则子类不能继承
String name = "xxx";
String address;
public void eat() {
System.out.println("XXXXXXXXXXXX");
}
//小知识点:被final修饰的类 void scanner string class system
}
package jicheng;
public class student extends person{ //extends 继承其他类的代码,这里称person是student的父类,而且只能单继承,不能多,只能继承一个父类,不能同时继承多个父类
// String sex;
// String name;
// String address;
//
// public void eat() {
// System.out.println("吃肉松小贝吗?");
// }
int name = 1;
{
System.out.println(name);
System.out.println(super.name);
}
//1、子类属性名与父类相同,子类创建的对象调用的重名属性是子类的
//2、如果想使用父类的属性,需要加关键字super
//3、super关键字在静态属性和静态代码块中不适用
@Override // 注解 表示为重写的方法 public > protected > 默认的 > private
public void eat() {
System.out.println("XXXXXXX");
}
//1、父类方法如果被final修饰,则父类方法不不能被重写
//2、重写的方法访问控制符不能小于父类的访问控制符
public static void main(String[] args) {
student student1 = new student();
student1.eat();
//student1.name = "XXX";
//System.out.println(student1.name);
}
}
在建立两个类,一个Father类,一个Son类
package jicheng;
public class Father {
String name;
String address;
public void eat(String name) {
System.out.println("吃肉松小贝");
}
public Object read() {
System.out.println("heihiehie");
return 0;
}
// 1、父类中方法static修饰,则该方法不能被重写
// 2、父类中非静态方法,子类重写后不能添加static
}
package jicheng;
public class Son {
//1、重写的方法需要和父类的方法名和参数列表(参数个数+参数数据类型)相同
//2、如果父类的方法返回值是void类型或者是基本数据类型,则重写后的方法要与父类的返回值类型相同
//3、如果父类的方法返回值是数据引用类型,则重写后的方法要么和父类相同,要么是父类返回值类型的子类
public void eat() {
System.out.println("吃个大头鬼!");
}
public Object read() { //这里Object也可以换成String; 但如果父类是String 则子类也只能是String,因为Sting被final修饰
System.out.println("哈哈哈哈");
return "";
}
public static void main(String[] args) {
Son son = new Son();
son.eat();
}
}
以上代码均属于一个Java project, 切记。