对象

继承


为什么需要继承?继承的作用?
第一好处:继承的本质在于抽象 。类是对对象的抽象,继承是对某一批类的抽象。
第二好处:为了提高代码的复用性。(事实上,利用组合可以更好的实现代码复用!)
extands的意思是“扩展”。子类是父类的扩展。

例子
现实世界中的继承无处不在。比如:
动物:
哺乳动物、爬行动物
哺乳动物:
灵长目、鲸目等。

extends j继承
(子类继承父类)
通过继承可以实现代码的重用,简化类的定义。
java中只有单继承,没有c++那样的多继承。
子类可以通过继承父类,拥有父类的成员的变量和成员方法。
在继承中子类可以根据需要重写父类的方法,叫方法的重写(重写方法(方法名,参数列表,返回类型相同,不能用比父类更大的访问权限。))。

定义一个“点”(Point)类用来表示二维空间中的点(有二个坐标)。要求如下: 可以生成具有特定坐标的点对象。 提供可以设置二个坐标的方法。
*提供可以计算该“点”距另外点距离的方法。




public class Point1 {
    //定义一个公共属性 
    double x;
    //定义一个公共属性
    double y;
    //无参构造方法
    Point1() {

    }
    //有参构造方法
    public Point1(double x, double y) {
        this.x = x;
        this.y = y;
    }
    //get set方法
    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
    //把坐标通过这个方法打印出来
    public void xianshi() {
        System.out.println("(" + x + "," + y + ")");
    }
    //计算
    public void jisun(Point1 p) {
        System.out.println(Math.sqrt(Math.pow(x - p.x, 2) + Math.pow(y - p.y, 2)));
    }


}

在main方法中调用

package com.sxt.duixiang;

public class Test1 {
//main方法
    public static void main(String[] args) {
    //通过new一个坐标
        Point p1=new Point();
        Point p2=new Point(2, 0);
        p1.setX(2);
        p1.setY(1);
        double se= p2.distance(p1);
    System.out.println(se);

}

super关键字
super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

public class Test { 
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.shout();
        Dog dog = new Dog();
        dog.shout();
    }
}

class Animal{
    void shout(){
        System.out.println("发出声音!");
    }
}
class Dog extends Animal {
    void shout(){
        System.out.println("旺旺旺!");
    }
}

封装的使用细节
类的属性的处理:
一般使用private. (除非本属性确定会让子类继承)
提供相应的get/set方法来访问相关属性. 这些方法通常是public,从而提供对属性的读取操作。 (注意:boolean变量的get方法是用:is开头!)
一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值