代码如下:
public class Interfaces {
public static void main(String[] args) {
Dog d = new Dog(3);
d.enjoy();
Valueable v = (Valueable)d;
System.out.println(d.valueable());
d.setname("aaaa");
System.out.println(d.getname());
System.out.println(d.getf()+"\n"); }
}interface Valueable {
public int valueable();
}
interface Protectedable {
public void protectedable();
}abstract class Animal{
private String name; abstract void enjoy();
public void setname(String name) {
this.name = name;
}
public String getname(){
return this.name;
}
}class Dog extends Animal implements Valueable,Protectedable {
private int age; Dog(int age){
this.age = age;
//this.name = name;
} public void enjoy() {
System.out.println("狗叫");
}
public int valueable() {
return 100;
}
public void protectedable() {
System.out.println("值钱的东西");
}
public String getf() {
return super.getname();
}
}那子类 d对象里面有没有 name 属性? 不然访问的name 是从哪里来的?
搞不明白了...
public class Interfaces {
public static void main(String[] args) {
Dog d = new Dog(3);
d.enjoy();
Valueable v = (Valueable)d;
System.out.println(d.valueable());
d.setname("aaaa");
System.out.println(d.getname());
System.out.println(d.getf()+"\n"); }
}interface Valueable {
public int valueable();
}
interface Protectedable {
public void protectedable();
}abstract class Animal{
private String name; abstract void enjoy();
public void setname(String name) {
this.name = name;
}
public String getname(){
return this.name;
}
}class Dog extends Animal implements Valueable,Protectedable {
private int age; Dog(int age){
this.age = age;
//this.name = name;
} public void enjoy() {
System.out.println("狗叫");
}
public int valueable() {
return 100;
}
public void protectedable() {
System.out.println("值钱的东西");
}
public String getf() {
return super.getname();
}
}那子类 d对象里面有没有 name 属性? 不然访问的name 是从哪里来的?
搞不明白了...
像我们经常用的实体Bean都是这么实现的啊,,,,,
private int age; Dog(int age){
this.age = age;
this.name = "aaaa";
} public void enjoy() {
System.out.println("狗叫");
}
public int valueable() {
return 100;
}
public void protectedable() {
System.out.println("值钱的东西");
}
public String getf() {
return super.getname();
}
}
代码中的红色部分编译不让通过,就是说子类没有 name 属性,它无权调用。