从最后的Class1类开始,创建Child类的对象,对象名为myC,引用对象myC的方法printAll(),由于Child类是Parent派生的子类,在Parent的子类Child是定义了一个和父类同名的方法printMe(),覆盖了父类的printMe()方法,用super.printMe();是为了调用父类的同名方法,在此先输出parent
创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站设计、成都网站制作,塑造企业网络形象打造互联网企业效应。
接着运行,this.printMe();语句,this表示是当前类,就是调用自己定义的printMe()方法,输出child
然后调用printMe();方法,如果调用的时候没有声明是调用父类的方法,则默认为是调用当前类的方法,所以输出child
本人也是菜鸟,不知道这么说你懂不懂。
实现思路就是有一个类Point,之后这个类有两个私有成员变量,之后可以通过set和get方法进行赋值和数值读取:
public class Point {
private String x;
private String y;
/**
* 默认构造函数
*/
public Point(){
}
/**
*有x和y的构造方法。
*/
public Point(String x,String y){
this.x=x;
this.y=y;
}
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
class A {
double f(double x, double y) {
return x + y;
}
int getNumber(int a) {
return a + 1;
}
static int g(int n) {
return n * n;
}
int m;
int getM() {
return m;
}
int seeM(){return m;}
}
class B extends A {
double f(int x, int y) {
return x * y;
}
int getNumber(int a) {
return a + 100;
}
int xx() {
return 11;
}
static int g(int n) {
int m = A.g(n);
return m + n;
}
int m;
int getM() {
return m + 100;
}
}
class E {
public static void main(String[] args) {
B b = new B();
System.out.println(b.f(3, 5));// 15.0
System.out.println(b.f(3.0, 5.0)); // 8.0
A a = new A();
System.out.println(a.getNumber(10));// 11
a = new B();// 原因为A的引用,B的对象,A的引用a指向B对象,此时的a只会拥有A的方法,但是如果B中有方法覆盖了A的方法,则会使用B的方法
System.out.println(a.getNumber(10));// 110
System.out.println(b.f(10.0, 8.0)); // 18.0
System.out.println(b.g(3));// 12
a = new B();// 原因为A的引用,B的对象,A的引用a指向B对象,此时的a只会拥有A的方法,但是如果B中有方法覆盖了A的方法,则会使用B的方法
System.out.println(a.f(10.0, 8.0)); // 18.0
System.out.println(a.g(3));// 9
b.m = 20;
System.out.println(b.getM());// 120
A a1 = b;// a1指向对象b
a1.m = -100;// a1变量赋值-100
System.out.println(a1.getM());// 120: a1.getM()==实质上已经被b的getM覆盖,且此时用的是b的变量100,调用之后结果为20+100 = 120
System.out.println(b.seeM());// -100: b的seeM()来自父类A,当然会调用父类的A.m=-100,所以此时结果为-100
}
}
class Father {
private int money = 12;
float height;
int seeMoney(){return money;}
}
class Son extends Father {
int height;
int lookMoney() {
int m = seeMoney();
return m;
}
}
class EE {
public static void main(String[] args) {
Son erzi = new Son();
// erzi.money = 300;// 错误原因在Son没有money这一属性,什么样的引用对应什么样的变量和方法
// erzi.height = 1.78F;// 类型错误
}
}
abstract class XX {
// 只能设置可视性修饰符“公用”或“受保护”中的一个
public static void cry(){}
abstract float cry1();
}