`
mawb
  • 浏览: 14193 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java的三大特性--封装,继承,多态

阅读更多

用三个类父类,子类,测试类

测试java的三大特性:封装,继承,多态:

 

父类:

package oop;

/** 面向对象的三大特性:封装,继承,多态 */
public class Character {
 /*
  * 封装:万物皆对象,我们把这些对象封装起来组成数据类型,那数据类型包括 属性和方法
  */

 /*
  * 类中的属性隐藏,提供公开的方法 修辞符 类型 属性名称; (可选:将赋值)
  */
 private String name;

 private int age;

 private final long ID;

 /* 类需要实例化,就提供构造方法 */
 public Character(long ID) {
  this.ID = ID;
  System.out.println("父类的构造方法,有参的");
 }

 /* 无参的构造函数,自己不定义系统也会定义一个无参无实现的工作函数 */
 public Character() {
  this.ID = 1000009489;
  System.out.println("父类的构造方法,无参的");
 }
 
 static{
  System.out.println("父类的静态代码块");
 }
 
 {
  System.out.println("父类的实例代码块");
 }

 /* 为隐藏的属性提供公开的方法seter和getter */
 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public long getID() {
  return ID;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 /*
  * 定义方法 修辞符 返回类型 方法名(参数列表){} 参数:类型 参数名
  */

 public void method1() {
  System.out.println("父类的method1()方法");
 }

 private void method2(int num, String name) {
  System.out.println("父类的method2(int num, String name)方法");
 }

 public void method3(String name) {
  System.out.println("父类的method3(String name)方法");
 }

 /*
  * 方法的重载: 同一个类,同名,不同参数
  */
 public void m1() {
  System.out.println("父类的m1()方法");
 }

 /*
  * public boolean m1(){ error }
  */

 /*
  * private void m1(){ error
  *  }
  */
 public void m1(String name) {
  System.out.println("父类的m1(String name)方法");
 }

 /*public boolean m1(String name) {
  error
 }*/

 public void m1(String name, int age) {
  System.out.println("父类的m1(String name, int age)方法");
 }

 public boolean m1(int age) {
  System.out.println("父类的m1(int age)方法");
  return true;
 }

}

 

子类:

package oop;

/**
 * 继承:子类继承于父类,继承了方法和属性 语法: 修辞符 class 子类名 extends 父类名{}
 */
public class SendCharacter extends Character {
 private String sendName;

 public String getSendName() {
  return sendName;
 }
 
 static{
  System.out.println("子类的静态代码块");
 }
 
 {
  System.out.println("子类是实例代码块");
 }

 public void setSendName(String sendName) {
  this.sendName = sendName;
 }

 /* 子类的构造方法一定要调用父类的构造方法 */
 public SendCharacter(long ID) {
  super(ID);// 调用父类的构造方法
  System.out.println("子类的有参构造方法");
 }

 public SendCharacter() {
  super();// 调用父类的构造方法
  System.out.println("子类的无参构造方法");
 }
 
 /*方法的覆盖:
  * 1.同没
  * 2.同参
  * 3.父子类之间
  * 4.子类的修辞符不能比父类的更封闭
  * 5.子类抛出的异常不能比父类更宽泛
  * */
 
 public void m1(){
  System.out.println("子类覆盖的m1()方法");
 }
 
 private void method2(int num, String name) {
  System.out.println("子类覆盖的method2(int num, String name)方法");
 }
 
 public void method3(String name) {
  System.out.println("子类覆盖的method3(String name)方法");
 }
 
 /**自己写的方法:*/
 public void subM1(){
  System.out.println("子类自己的subM1()方法");
 }

}

测试类:

 

package oop;

public class Test {

 public static void main(String[] args) {
  System.out.println("main of start");
  //父类对象
  Character c=new Character();
  //父类对象,只能调用父类的方法
  c.m1();
  c.m1(10);
  
  
  //子类对象,父类,子类的方法都能调用
  SendCharacter sc=new SendCharacter();
  sc.subM1();
  
  //多态:--把子类对象当父类来看
  Character  cs=new SendCharacter();
  cs.m1();
  cs.m1(20);
  //cs.subM1();//error
  
  /*
   *
   * 1.如果我们把子类的对象当成父类来看,那我们就只能访问
   * 父类中已有的方法和属性
   * 2.如果子类把父类的方法覆盖了,再把子类当成父类来看,去
   * 调用方法调用的是覆盖后的方法
   *
   * 主观认为----------客观存在
   *
   * 编译时类型(编译器)--------运行时类型(JVM)
   * */
  
  System.out.println("main of end");
 }
 
 //运行结果如下:
 
 /*main of start
 父类的静态代码块
 父类的实例代码块
 父类的构造方法,无参的
 父类的m1()方法
 父类的m1(int age)方法
 子类的静态代码块
 父类的实例代码块
 父类的构造方法,无参的
 子类是实例代码块
 子类的无参构造方法
 子类自己的subM1()方法
 父类的实例代码块
 父类的构造方法,无参的
 子类是实例代码块
 子类的无参构造方法
 子类覆盖的m1()方法
 父类的m1(int age)方法
 main of end*/

}

 

 

分享到:
评论

相关推荐

    java 三大特性--封装、继承和多态理解

    Java编程语言以其强大的功能和广泛的应用而闻名,其中三大特性——封装、继承和多态是其核心概念,对于理解和编写高效、可维护的代码至关重要。 **封装**是面向对象编程的基础,它涉及到将数据(属性)和操作这些...

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    OOP 的主要特征包括封装、继承和多态。 1. **封装**:封装是将数据和操作数据的方法捆绑在一起,隐藏对象的属性和实现细节,仅对外提供公共访问方式。这样可以减少外部环境对对象的影响和破坏,提高代码的安全性和...

    java面向对象三要素封装继承和多态源码

    java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...

    java基础继承封装多态

    本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...

    封装继承多态总结

    封装继承多态总结

    封装、继承、多态.docx

    封装、继承、多态 一、 封装 封装是面向对象编程的三大特性之一,它是指将同一类事物的特性与功能包装在一起,对外暴露调用的接口...Java 面向对象的三大特性是:封装、继承与多态。这三大特性是面向对象编程的核心。

    java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法

    通过以上对封装、继承、覆盖、构造过程、多态以及 `static`、`this`、`super` 和 `final` 关键字的详细介绍,我们可以更好地理解和运用Java的核心概念和技术点,从而编写出更加高效、灵活和易于维护的代码。

    java封装 继承与多态

    java封装 继承与多态 程序设计 类与对象

    JAVA封装继承与多态PPT教案学习.pptx

    JAVA 封装继承与多态是面向对象程序设计语言中三个重要的概念,本文将对这三个概念进行详细的解释。 一、封装 封装是指隐藏对象的内部细节,使对象外部不能随意存取对象的内部数据的过程。JAVA 中,对象就是一个...

    【IT十八掌徐培成】Java基础第06天-03.多态-类多态-接口多态-同名属性问题.zip

    在Java中,多态性(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装和继承。多态性使得代码更加灵活,能够处理不同类型的对象,提高代码的复用性。 在Java中,多态分为类多态和接口多态。类多态主要...

    Java封装继承多态实例以及文件流操作

    在这个实例中,我们将探讨四个关键概念:封装、继承、多态以及文件流操作,这些都是Java中的核心特性,也是理解OOP(面向对象编程)的基础。 首先,**封装**是面向对象编程的核心理念之一,它涉及将数据和方法捆绑...

    jave 继承、封装、多态

    面向对象编程是Java的核心特性,它包括三个主要概念:封装、继承和多态。下面将分别详细介绍这三个概念以及它们在Java编程中的应用。 **封装**是面向对象编程的基础,它强调将数据和行为捆绑在一起,形成一个独立的...

    教学视频-继承&多态

    多态是指同一种行为在不同对象上有不同的表现形式,它是面向对象的三大特性之一(封装、继承、多态)的重要组成部分。 1. 方法重载(Overloading):在同一个类中,可以定义多个具有相同名称但参数列表不同的方法,...

    学习Java程序入门-面向对象之封装,继承,多态(下).docx

    本文将对 Java 面向对象编程的三大特性:封装、继承、多态进行详细的解释和分析。 一、封装 封装是面向对象编程的基本特性之一,指的是将数据和操作数据的方法封装在一起,形成一个整体,使得外部无法直接访问内部...

    JAVA语言程序设计-第七章 类的封装、多态和继承

    在Java编程语言中,类的封装、多态和继承是面向对象编程的三大核心特性。这些概念为软件开发提供了强大的抽象能力和代码复用机制,使得程序设计更加灵活、高效。 ### 一、类的封装 封装是面向对象编程的基础,它将...

    Java面向对象编程(封装/继承/多态)实例解析

    在 Java 中,面向对象编程主要体现在三大特征:封装、继承和多态。 封装是指隐藏对象的内部细节,而仅暴露必要的信息给外部世界。通过封装,可以保护对象的内部状态,并提供对外部访问的接口。在 Java 中,封装可以...

    封装、继承、多态一语道破

    ### 封装、继承、多态一语道破 #### 一、封装 ...总之,封装、继承、多态是面向对象编程中的三大核心特性,它们共同构成了面向对象程序设计的基础,帮助开发者构建出更加健壮、灵活和可维护的软件系统。

Global site tag (gtag.js) - Google Analytics