java面向对象(2)

220 阅读2分钟

继承关系: 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

对象的创建和使用:

1.必须使用new关键字创建对象
2.使用对象(引用)成员变量或引用对象
3.使用对象(引用)方法(参数列表)来调用对象的方法
4.用一类的每个对象有不同的成员变量储存空间
5.同一类的每个对象共享该类的方法

# 构造方法(构造函数)
* 使用new+构造方法创建一个新的对象
* 构造函数是定义在java类中的一个初始化对象的函数
* 构造函数和类的名字相同没有返回值
>例子

public class User {

private String username;
private String passwrod;

public User(String username, String passwrod) {
this.username = username;
this.passwrod = passwrod;
}

}


>内存解析:

基本数据类型一块内存 引用数据类型2快内存 public static void main(String[] args) { User user = new User(); int data = 9; BirrhDate b1 = new BirrhDate(7,7,2011); BirrhDate b2 = new BirrhDate(1,1,2000); user.change1(data); user.change2(d1); user.change3(d2); System.out.println("data"+date); d1.display(); d2.display(); }



类的继承:
java中使用 extends 关键字实现类的继承机制,其语法规则为:
<modifier> class <name> extends <superclass>

通过继承,子类自动拥有了基类的所有成员变量和方法

java 只能单继承。不允许多继承


# 方法的重写:
* 在子类中可以根据需要对基类中继承来的方法进行重写
* 重写方法必须和被重写方法具有相同方法名称,参数列表和返回类型;
* 重写方法不能使用比被重写方法更严格的访问权限


# super关键字:
*在java类中使用supper来引用基类的成分:例如

class Country { String name; void value() { name = "China"; } }

class City extends Country { String name; void value() { name = "Shanghai"; super.value(); //调用父类的方法 System.out.println(name); System.out.println(super.name); }

public static void main(String[] args) {
City c=new City();
c.value();

} }

>运行结果:

Shanghai China




>课堂练习案例
*(1)
以动物为题目:

第一个class样式:
public class Animal {
    String dog;
    String cat;
    String pig;
    String sheep;
    void aa(){
    dog="狗";
    cat="猫";
    pig=" 猪";
    sheep="羊";

    }
    
//    public void hh (String dog){
    System.out.println("我们是吃草的");
    } //重载
    public void hh(){
    int i=0;
    }//
   public void hh (){
  System.out.println("我们是吃草的");
    } 
}

第二个class样式:

public class Danimal extends Animal {
    String dog;
    String cat;
    String pig;
    String sheep;
    void aa(){
    dog="狗";
    cat="猫";
    pig=" 猪";
    sheep="羊";
    super.aa();//super引用基类型的
   System.out.println(dog+cat+pig+sheep);
   System.out.println(super.cat+super.dog+super.pig+super.sheep);
    }

    @Override
    //重写
    public void hh() {
    super.hh();
    }
}
//直接打(hh)



{ //重载下面的
  public void hh (String dog){
    System.out.println("我们是吃草的");
    } //重载
    public void hh(){
    int i=0;
    }
}