用三个类父类,子类,测试类
测试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面向对象基础测试题-继承-封装-多态等测试题.docx
NULL 博文链接:https://lingf.iteye.com/blog/1450831
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...
java基础_继承封装 多态,概念的梳理,对初学者很有帮助,看一遍就清楚了
封装继承多态总结
java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法
JAVA 封装、继承、多态 三大特性以及实操
java封装 继承与多态 程序设计 类与对象
JAVA封装继承与多态PPT教案学习.pptx
Java封装继承多态实例以及文件流操作,自己整理的东西,用了单态模式实现了多态,并且贯彻了OOP思想,用到了文件流的写入与读取,希望对大家有帮助
前端模块化脚手架,可实现类似java的封装继承多态特性
圆点符号用于访问对象的成员,构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰...
jave面向对象特性继承、封装、多态的实验报告,jave重要实验。
Java面向对象三大特性思维导图 一、封装 封装的必要性:在对象的外部为对象的属性赋值,可能存在非法数据的录入,存在不安全隐患。就目前的技术而言,并没有办法对属性的赋值加以控制。所以要实现属性的封装非常重要...
学习Java程序入门-面向对象之封装,继承,多态(下).docx
主要介绍了Java面向对象编程(封装/继承/多态)实例解析的相关内容,具有一定参考价值,需要的朋友可以了解下。
java面向对象的基本知识,封装继承多态等
武汉理工大学-Java面向对象与多线程综合实验-(1)封装、继承与多态(IDEA实现)