package Java学习.chen.haha.ac.dome1;
//jicheng is fangfa
public class jicheng{
private int money = 100000;
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
package Java学习.chen.haha.ac.dome1;
//父类jicheng 子类xuexi
//java中所有的类直接间接继承object
public class xuexi extends jicheng{
//子类继承父类的方法 拥有父类的方法
//私有的无法继承private
public static void main(String[] args) {
jicheng student = new jicheng();
System.out.println(student.getMoney());//100000
}
}
1.调用父类的构造方法,必须在构造方法的第一个
2.super必须自能出现在子类的方法或者构造方法中
3super和this 不能同时调用构造方法
vs this
代表对象不同
this;本身调用者这个对象
super;代表父类对象的应用
前提
this在没有继承也可以使用
super只能在继承条件下使用
构造方法
this();本类的构造
super();父类的构造
package Java学习.chen.haha.ac.dome1;
public class jicheng{
//私有东西无法杯继承
public jicheng(){
System.out.println("jicheng被执行了");
}
}
package Java学习.chen.haha.ac.dome1;
//父类jicheng 子类xuexi
//java中所有的类直接间接继承object
public class xuexi extends jicheng{
public static void main(String[] args) {
xue xue = new xue();//xue无参执行了 jicheng被执行了
}
}
package Java学习.chen.haha.ac.dome1;
public class xue extends jicheng{
public xue(){
//调用父类构造器必须要在代码的第一行
//隐藏代码 调用了父类的无参构造
//super();
System.out.println("xue无参执行了");
}
}
package Java学习.chen.haha.ac.dome1;//子类
//父类jicheng 子类xuexi
//java中所有的类直接间接继承object
public class xuexi extends jicheng{
protected String name = "dong";
public void test(String name){
System.out.println(name);//马建伟
System.out.println(this.name);//dong
System.out.println(super.name);//chen
}
}
public class xue extends jicheng{
public static void main(String[] args) {
xuexi xuexi = new xuexi();
xuexi.test("马建伟");
}
}
package Java学习.chen.haha.ac.dome1;//父类
public class jicheng{
protected String name = "chen";
}
需要有继承关系子类重写父类的方法
1方法名必须相同
2参数列表必须相同
3修饰符;范围可以扩大但不能缩写 public 》private(私有)
4抛出异常;范围可以被缩小,但不能扩大 classNotFoundException--->Exception
重写子类的和父类一致但方法体不同
为什么需要重写,子类不一定需要,或者不一定满足ait+insert
package Java学习.chen.haha.ac.dome3;
public class b {
public static void text(){//1
System.out.println("b>=test");
}
public void test(){//2
System.out.println("b>=test");
}
}
package Java学习.chen.haha.ac.dome3;
public class a extends b {
public static void test(){//结果1
System.out.println("a>=test");
}
@Override//重写
public void test() {//结果二
System.out.println();
}
}
package Java学习.chen.haha.ac.dome3;
import static javax.print.attribute.standard.MediaSizeName.A;
public class c {
//静态方法;方法的调用只在左边,定义的类型有关
//非静态方法 重写
public static void main(String[] args) {
//方法的调用只和左边,定义的数据类型有关
a A = new a();
A.test();//1a>=test 2b>=test
//b为父类引用指向了子类
b B = new a();
B.test();// b>=test b>=test
}
}
原文:https://www.cnblogs.com/saluteme666/p/14722623.html