首页 > 编程语言 >java(7)

java(7)

时间:2023-01-31 07:44:19浏览次数:51  
标签:java 继承 子类 void System println 父类

封装

封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内部结构。也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。

 1 package pojo.demo01;
 2  
 3 public abstract class Pet {
 4     private String name;//名字
 5     private int health; //健康值
 6     public String getName() {
 7         return name;
 8     }
 9     public void setName(String name) {
10         this.name = name;
11     }
12     public int getHealth() {
13         return health;
14     }
15     public void setHealth(int health) {
16         this.health = health;
17     }
18  
19     //吃东西的方法
20     public abstract void eat();
21 }

以下提供get(),set()方法和eat()吃东西方法,外部类去调用时只知道方法并不知道内部怎么实现的。

 

 

继承

   

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

1、继承是面向对象的三大特征之一,也是实现代码复用的重要手段。Java的继承具有单继承的特点,即只能继承自一个父类,每个子类只有一个直接父类,但是其父类又可以继承于另一个类,从而实现了子类可以间接继承多个父类,但其本质上划分仍然是一个父类和子类的关系。

2、Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类、超类),父类和子类的关系,是一种一般和特殊的关系。就像是水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类,则苹果是一种特殊的水果。

3、Java使用extends作为继承的关键字,extends关键字在英文是扩展的意思,而不是继承。为什么国内把extends翻译成继承呢?除了与历史原因有关外,把extends翻译成为继承也是有其道理的:子类扩展父类,将可以获得父类的全部属性和方法,这与汉语中得继承(子辈从父辈那里获得一笔财富成为继承)具有很好的类似性。

值得指出的是:Java的子类不能获得父类的构造器。

class  Animal {   

  String  name="animal";  

  int  age;  

  void move(){

    System.out.println("animalmove");

  }

}

classDog extends Animal{

  String  name="dog";    //隐藏了父类的name属性;

  float  weight;        //子类新增成员变量

  void move(){           //覆盖了父类的方法move()
 1 classSuperClass {
 2 
 3   SuperClass() {
 4 
 5      System.out.println("调用父类无参构造函数");
 6 
 7   }
 8 
 9   SuperClass(int n) {
10 
11      System.out.println("调用父类有参构造函数:" + n );
12 
13   }
14 
15 }
16 
17 classSubClass extends SuperClass{
18 
19    SubClass(int n) {
20 
21    System.out.println("调用子类有参构造函数:" + n );
22 
23    }
24 
25    SubClass(){
26 
27      super(200);
28 
29       System.out.println("调用子类无参构造函数");
30 
31    }
32 
33 }
34 
35 publicclass  InheritDemo2{
36 
37   public static void main(String arg[]) {
38 
39      SubClass s1 = new SubClass();
40 
41      SubClass s2 = new SubClass(100);
42 
43   }
44 
45 }

 

    super.move();       //用super调用父类的方法

    System.out.println("Dog Move");

  }

}

publicclass InheritDemo{

  public static void main(String args[]){

    Dog d=new Dog();

    d.age=5;

    d.weight=6;

    System.out.println(d.name+" is"+d.age+" years old");

    System.out.println("weight:"+d.weight);

    d.move();

  }

}

 

多态(Polymorphism)

 

多态性是指在继承关系中的父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各子类类中具有不同的含义。

    Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态(Polymorphism)

 

 class  Animal2  {   

 void  eat(){

   System.out.println("animal eat");

   }

 }

class Dog extends Animal2  {

 void  eat(){

   System.out.println("Dog eat bone");

   }  

}

class Cat extends Animal2  {  

 void  eat(){

   System.out.println("Cat eat fish");

  }

}

public class PloyDemo{

 public static void main(String args[]){

    Animal2  a;

    a=newAnimal2 ();   //编译时类型和运行时类型完全一样,因此不存在多态

    a.eat();

   a=new Dog();   //下面编译时类型和运行时类型不一样,多态发生

   a.eat();

   a=new Cat();   //下面编译时类型和运行时类型不一样,多态发生

   a.eat();

  }

}

 


————————————————
版权声明:本文为CSDN博主「冰可乐!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_48984694/article/details/125987177

标签:java,继承,子类,void,System,println,父类
From: https://www.cnblogs.com/zhbx/p/17077701.html

相关文章

  • java(6)Java 对象间关系(依赖、关联、聚合、组合)
    依赖(Dependency)依赖关系,是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。使用关系。一般情况下,依赖关系在Java语言中体现为局域变量、方法的形参,或者对......
  • java(5)常用的 dos 命令
    查看当前目录是有什么内容dirdirdird:\abc2\test200 切换到其他盘下:盘符号cd:changedirectory案例演示:切换到c盘cd/Dc: 切换到当前盘的其他目录下(使......
  • java(3)变量和常量
     变量的类型只有引用数据类型和基本数据类型(byte,short,char,int,long,float,double,char)两种。 ......
  • java(1)java语言特性
    简单性:相对于其他编程语言而言,java较为简单,例如:java不再支持多继承,C++是支持多继承的,多继承比较复杂,C++中有指针,java中屏蔽了指针的概念,避免了绝大部分的指针越界和内存泄......
  • javascript:js 读写 style属性(DOM模型)
    javascript:js读写style属性(DOM模型)    一、说明: 1、js读取style属性,需要去掉css格式中的“-”,“-”后面的第一个字母大写。js中的减号(“-”),与css中属性......
  • 洛谷oj题单【入门1】顺序结构-入门难度(Java)
    洛谷oj题单【入门1】顺序结构-入门难度(Java)来源:https://www.luogu.com.cn/training/100#problemsB2002Hello,World!publicclassMain{  publicstaticvoidmain......
  • 痛恨 JavaScript 每一天(缺少指针)
    背景二叉搜索树,插入节点JavaScript解法functioninsertNode(root,newNode){if(newNode.key<root.key){if(root.left){insertNode(r......
  • java多线程基础小白指南--线程的状态
    线程的状态比较混乱,网上的资料也是五花八门,这时候就要参考注意截图中的最后一句话,很多人把jvm中线程状态与实际上的os线程状态搞混了,所以才会有很多乱七八糟的状态出现。......
  • 第三天Java——基础知识
    创建项目1.先创建空项目Emptyproject2.再创建模板Module3.设置项目结构 4.创建Javaclass5.创建包一、注释注释颜色设置  Java中的注释有三种:1.单行注释......
  • 第10届蓝桥杯JavaB组省赛
    第10届蓝桥杯JavaB组省赛其他链接第11届蓝桥杯JavaB组省赛-Cattle_Horse第12届蓝桥杯JavaB组省赛-Cattle_Horse第13届蓝桥杯javaB组省赛-Cattle_Horse前言用时......