java抽象类变量,Java的OOP(继承,上转型变量,抽象类)7.13

一.继承 1.Java的继承只能是单一继承,子类享有父类的可访问资源(不可访问父类的private资源) 2.定义的形式: class T{} class T2 extends T{} 3.成员变量前没有访问修饰符时,属于友好访问修饰符。 代码示例: 父类: public class Father {

public int money;

void setMoney() {//成员变量前没有访问修饰符时,属于友好访问修饰符。

System.out.println("father");

}

}

子类: 1.super:是当前对象里面的父对象的引用 2.子类不能访问的资源(子类覆盖(可能是成员变量或方法)) 3.方法覆盖/隐藏:方法重写(子类的方法覆盖父类的方法) 4.子类的构造方法中必须调用父类的构造方法 代码示例: public class Son extends Father { public int money;//子类覆盖父类的实例成员变量

public Son(int money) {

super(money);//调用父类构造方法

this.money= money;

}

public void setMoney(){//重写父类方法

System.out.println("son");

super.setMoney();//调用父类的setMoney方法

}

} 二.上转型变量 上转型对象的格式:父类(实体类) 父类变量=new 实体类子类(); 抽象类 变量名=new 抽象类的子类(); 接口 变量=new 实现接口的类();

1.实现继承与多态 2.继承父类的可访问的资源, 3.多态,同一个方法,被不同的子类重写 4.上转型变量不能访问子类中重写父类方法外的子类资源,即只能访问子类中被重写的方法和类的可访问的资源这两部分 注:应把上转型变量同实体类,抽象类,接口的重写一起理解

示例代码: 父类: public class Shape { int a=9; void test(){ System.out.println("ssssssssss"); }

void ca(){

System.out.println("xxxxxx");

}

}

子类: public class S2 extends Shape {

void test(){

System.out.println("s2");

}

int test(int i){

return 1;

}

} 子类S2中只有void test()方法重写了父类的void test()方法,子类去重写父类会实现多态 注:子类覆盖父类方法需要:1.该方法同名 2.方法需要的参数和返回值也要一样

三.抽象类 抽象类的组成:实体方法,抽象方法 抽象类不能new,不能有对象,例如 抽象类 变量名=new 抽象类();这种写法是错的 抽象类可以有构造方法,在子类创建子类对象时会调用父类的构造方法

示例代码: 抽象类(父类): public abstract class User {

public User() {

System.out.println("user");

}

// 实际

void setname() {

}

// 抽象交给子类去重写实现,子类必须实现抽象类(父类)的抽象方法

abstract void get();

}

子类: public class UserImp extends User {

public UserImp() {

// TODO Auto-generated constructor stub

System.out.println("userimp");

}

@Override

void get() {//重写抽象类中的抽象方法

}

public void o(){}

}

public class Test {

public static void main(String[] args) {

// TODO Auto-generated method stub

UserImp u = new UserImp();//定义子类对象

User user=new UserImp();//定义上转型变量

}

}

一些重要概念: 1 重写与方法重载的区别 重写是子类的方法覆盖父类的方法,要求方法名和参数都相同 重载是相同的类中,具有多个函数名称相同,但函数的参数列表不同的函数

2 上转型对象可以访问那些资源 父类的成员变量,父类的方法,子类去重写父类的方法

3 子类对象与上转型对象有什么区别

子类对象可以访问除了父类继承的资源外,还能访问子类独有的资源 上转型对象只能访问父类的资源和子类重写父类的方法

4 子类继承父类,当父类有私有变量,子类能否继承? 不能继承

5 父类构造方法发生改变,子类构造方法不发生改变? 也发生改变,子类的构造方法中也要调用父类的构造方法

6 子类隐藏父类的可访问的成员变量,子类这个成员变量 一定与父类成员变量同类型吗 不一定

7 子类覆盖父类方法,该方法同名就可以实现覆盖吗? 不可以,还有方法需要的参数和返回值也要一样

8 子类=父类可访问的资源? 子类资源多于或等于父类可访问的资源

9 抽象类与普通类有什么区别,与普通类继承有什么区别 抽象类不能有对象,普通类可以有对象 抽象类有抽象方法,普通类无抽象方法

10 抽象类体只写实体方法,对吗? 可以,抽象类可以只有有实体方法

11 抽象类不能有对象,您怎么理解 抽象类是具有抽象方法的,无法实例化

12 抽象类的构造方法,什么时候被执行? 在子类建立对象时,在子类的构造方法中调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值