1 多态
父类类型 x = new 子类类型();
比如:
Thread x = new MyThread();
x.start();//子类属性不能访问到,父子类之间的属性 没有重写关系
方法
比如 class MyThread extends Thread{}
其中MyThread是子类 Thread是父类
a,父类特有的可以访问(Thread)
b,子类中重写的方法可以访问(MyThread)
c,子类中特有的不能访问(MyThread)
为了更好的加深理解,下面写出一段代码关于父子类代码之间的分析:
package com.free;
public class Test1 {
public static void main(String[] args) { //main方法为入口
Animal x = new Tiger(); //创造一个Tiger类对象并赋值给 x
System.out.println
("(1)x.news is " + x.news);//调用到父类Animal中的new方法
System.out.println
("(2)((Tiger)x).news is " //调用到父类Animal中的Tiger 里面的new方法
+ ((Tiger)x).news);
System.out.println//调用到父类Animal中的smile方法
("(3)x.smile() is " + x.smile());
System.out.println//调用到父类Animal中的Tiger 里面的smile方法
("(4)((Tiger)x).smile() is " +
((Tiger)x).smile());//tiger 里面的smile方法
System.out.println
("(5)x.getNews() is " +
x.getNews());
System.out.println
("(6)x.getMessage() is " +
x.getMessage());
}
}
class Animal {
public String news =
"Animal's news";
public String message =
"Animal's message";
public static String smile() {
return "smile from Animal";
}
public String getNews() {
return news;
}
public String getMessage(){ //这个父类的方法没有被重写
return this.message; //调用本父类Animal中的message方法
}
}
class Tiger extends Animal {
public String news = //子类中特有的定义属性
"Tiger's news";
public String message =
"Tiger's message";
public static String smile() {
return "smile from Tiger";
}
public String getNews() { //继承父类,但是父类中的那个方法没有被重写,所以也会把父类的那个也继承下
return this.news; //调用Tiger这个子类的getNews的方法
}
}
以下为输出的结果:
(1)x.news is Animal's news
(2)((Tiger)x).news is Tiger's news
(3)x.smile() is smile from Animal
(4)((Tiger)x).smile() is smile from Tiger
(5)x.getNews() is Tiger's news
(6)x.getMessage() is Animal's message
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦