java向上转型 为什么只能引用父类属性,而方法调用时只能调用父类已有的方法,并且父类方法能被子类覆盖。
在创建对象的时候是调用子类构造器,那么属性是什么时候赋值的,如果是调用有参构造器为什么里面的赋值没有用呢?packageday05;publicclassPerson{S...
在创建对象的时候是调用子类构造器,那么属性是什么时候赋值的,如果是调用有参构造器为什么里面的赋值没有用呢?
package day05;
public class Person {
String name="父类";
public Person() {
System.out.println("调用父类无参构造器");
}
public Person(String name){
this.name=name;
System.out.println("调用父类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用父类方法");
}
public static void main(String[] args) {
Person p=new Son("aa");
System.out.println(p.name);;
}
}
class Son extends Person{
String name="子类";
public Son() {
System.out.println("调用子类无参构造器");
}
public Son(String name){
this.name=name;
System.out.println("调用子类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用子类方法");
}
} 展开
package day05;
public class Person {
String name="父类";
public Person() {
System.out.println("调用父类无参构造器");
}
public Person(String name){
this.name=name;
System.out.println("调用父类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用父类方法");
}
public static void main(String[] args) {
Person p=new Son("aa");
System.out.println(p.name);;
}
}
class Son extends Person{
String name="子类";
public Son() {
System.out.println("调用子类无参构造器");
}
public Son(String name){
this.name=name;
System.out.println("调用子类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用子类方法");
}
} 展开
2个回答
2018-12-28
展开全部
虽然时间有点久了,还是要分享一下自己的见解。
向上造型:抽取 子类中 [和父类共有的属性和方法] 用来操作。
向上造型作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法。(非静态方法调用子类的;静态方法,属性调用父类的)
普通继承作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法+子类扩展方法和属性。
反过来是不是可以说,向上转型就是去掉子类里父类没有的方法和属性。
向下造型,把抽取出拥有父类共性后的子类再强转为同一类型的子类,这时子类和普通子类一样可以使用扩展方法和属性
向上造型:抽取 子类中 [和父类共有的属性和方法] 用来操作。
向上造型作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法。(非静态方法调用子类的;静态方法,属性调用父类的)
普通继承作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法+子类扩展方法和属性。
反过来是不是可以说,向上转型就是去掉子类里父类没有的方法和属性。
向下造型,把抽取出拥有父类共性后的子类再强转为同一类型的子类,这时子类和普通子类一样可以使用扩展方法和属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询