Java Study For Seven Day( 面向对象三)
继承

class Person
{
String name;
int age;
}
class Student extends Person
{ void study()
{
System.out.println("good study");
}
}
class Worker extends Person
{
void work()
{
System.out.println("good work");
}
}
class ExtendsDemo
{
public static void main(String[] args)
{ }
}

1.把很多的类的相同的特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系
这样的话多个类可以省略很多的代码,这个关系就是继承,Java中关键字extends来表示。
2.继承的体系结构
A.多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系,叫做继承体系。
B.继承体系的学习和原则
学习顶层的内容。原因是它是体系的共性内容
创建子类使用。也就是使用底层的具体对象
3.继承的特点
Java中只能是单继承,没有多继承这一说法。
Java中可以多层(重)继承
4.继承的好处
继承的出现提高了代码的复用性
继承让类与类之间产生了关系,是多态的前提条件
5.子父类中的成员间的关系
A.成员变量
在子类中方法中使用一个变量时,首先,在方法的局部变量中找这个变量,有则使用
否则,在本类中找成员变量,有则使用,否则,在父类中找成员变量,有则使用,否则报错。
B.成员方法
用子类对象使用方法时,首先,在子类中找这个方法,有则使用,否则,在父类中
找这个方法,有则使用,否则报错。
重写和重载的区别
重载:在同一个类中,方法名相同但是参数的列表不同,并且返回类型不能作为判断的依据
重写:在不同类中(子父类中),方法声明(返回类型、方法名称、参数列表都要一致)。
重写需要注意:
子类方法的访问权限要大于等于父类方法的访问权限
静态只能重写静态的,一般不会出现
构造方法
子列实例化过程
子类创建对象时,会先去创建父类的的对象,默认是去调用父类的五参构造方法
注意:子类构造方法中,默认第一行是super,原因是因为它继承父类的成员使用,使用前
这些成员必须初始化,因而,会先创建一个父类的对象,所以当父类没有无参构造函数时,必须使用this或是super
调用其它的构造函数。
6.this和super的区别
this代表是本类的对象的引用,而super代表的是父类的存储空间

class Fu
{
private int num =4;
void sperk()
{
System.out.println("vb");
}
}
class Zi extends Fu
{
int num =5;
void show()
{
System.out.println(super.num);
}
void speak()
{
System.out.println("java");
}
} class ExtendsDemo1
{
public static void main(String[] args)
{
Zi zi = new Zi();//new一对象加载子类.class文件前先加载父类.class文件
System.out.println(zi.num+"..."+zi.num);
zi.show();
}
} class Tel
{
void show()
{
System.out.println("number"); }
}
class NewTel extends Tel
{
void show()
{
System.out.println("name")
//System.out.println("number");
super.show();
System.out.println("picture");
}
}

final关键字
1.最终的意思,可以用于修饰类、方法、变量
2.final修饰的类不能继承,修饰的方法不能重写、修饰的变量是一个常量,只能被赋值一次
内部类只能访问被final修饰的局部变量。

class Demo
{
public static final int x =3;//全局常量。
final void show1()
{
final int y =4;//
y = 4;//会挂 进行了第二次赋值 final double pai =3.14;//给3.14这个数据起个名字,方便阅读 }
void show2(){} }
class SubDemo extends Demo
{
void show1(){}
}
class FinalDemo
{
public static void main(String[] args)
{ }
}

抽象类
1.多个类有相同的方法声明,但是方法体不一样,此时可以考虑把方法声明进行抽取,让子类继承后去
实现方法体,没有方法体,从而需要用抽象标志下,关键字是abstract
2.抽象类
该方法称为抽象方法,包含抽象方法的类就是抽象类
3.抽象类的特点
抽象类和抽象方法都要用abstract进行修饰
抽象类不能被实例化
抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
4.抽象类中的数据特点
成员变量
抽象类中可以有常量,也可以有变量
成员方法
抽象类中可以有抽象方法,也可以有非抽象方法
构造函数
抽象类是一个类,所有有构造函数,但是本身不能实例化,但是可以给子类实例化使用
5.抽象类中的问题
A.抽象类中有构造函数不能被实例化但是可以供子类实例化
B.抽象关键字abstract不可以和那些关键字共存?
私有的内容 继承不到,所以不能重写但是abstract修饰的方法要求被重写所以冲突
final修饰的方法不能被重写也冲突,static假如一个抽象方法能通过static修饰,那么这个方法,就可以直接通过类名调用。而抽象方法是没有方法体的,这样的调用无意义。所以,不能用static修饰。
C.抽象类中可不可以没有抽象方法?
抽象类中没有抽象方法的作用,只是为了不让别的类建立该抽象类对象。这个在awt中有体现。

class Demo
{
public static final int x =3;//全局常量。
final void show1()
{
final int y =4;//
y = 4;//会挂 进行了第二次赋值 final double pai =3.14;//给3.14这个数据起个名字,方便阅读 }
void show2(){} }
class SubDemo extends Demo
{
void show1(){}
}
class FinalDemo
{
public static void main(String[] args)
{ }
}
*抽象类练习 class
{
}
class Employee
{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
}
public abstract void work(); }
class Manage extends Employee
{
private int bonus;
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("manage work");
}
}
class Pro extends Employee
{
Pro(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("pro work");
}
}
class
{
public static void main(String[] args)
{ }
}

接口interface
1.当一个类中的方法都是抽象的时候,那么Java中提供了另一种表示方式,称为接口,用interface
关键字表示,而类与接口之间关系用关键字implements实现表示

interface Inter
{
public static final int NUM = 3;
public abstract void show(); }
interface InterA
{
public abstract void method();
}
class Demo
{
public void function(){}
}
class Test extends Demo implements Inter,InterA
{
public void show(){}
public void method(){} }
interface A
{
void methodA(); }
interface B// extends A
{
void methodB(); }
interface C extends B,A
{
void methodC();
}
class D implements C
{
public void methodA(){}
public void methodB(){}
public void methodC(){} } class InterfaceDemo
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);
}
}

2.接口的成员特点
成员变量
是常量,默认是public static final
成员方法
都是抽象的,默认是public abstract
3.关系
类与类的关系
是继承关系,类与类只能单继承,可以多重继承。
类与接口的关系
是实现的关系,类可以多啊、实现接口,类继承一个类的同时,可以实现多个接口。
接口和接口的关系
是继承关系,接口可以多继承接口。
4.接口的特点
对外暴露规则,是扩展功能,接口的出现降低了耦合性(类与类之间的关系)
5.接口和抽象类的区别
抽象类只能是单继承,接口可以多实现,接口避免了多继承的局限性
抽象类中的数据特点:
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法
构造方法:有构造方法
接口的数据特点
成员变量:是常量public static final
成员方法:都是抽象方法。都有默认修饰 public abstract
构造方法:没有构造方法
抽象类中定义的是继承体系的共性功能而接口中定义的是继承体系中的扩展的功能
抽象类被继承是is a 关系:某某是某某的一中而接口被实现是like a 关系:某某像某某一种

abstract class Student
{
abstract void study();
void sleep()
{
System.out.println("sleep");
} }
interface Drinking
{
void drink();
}
interface Smoking
{
void smoke();
}
class ZhangSan extends Student implements Smoking,Drinking
{
void study(){}
public void smoke(){}
public void drink(){}
}
class LiSi extends Student
{
void study(){}
}
class InterfaceTest
{
public static void main(String[] args)
{ }
}
class Sporter
{
void play();
}
interface Study
{
}
class WangWu extends Sporter implements Study
{ }

附:
Random类的使用
产生随机数的数
掌握的内容
构造函数
Random()创建一个新的随机数的生成器
Random(long seed)使用单个long种子创建一个新的随机数生成器
成员方法
int nextInt()返回下一个伪随机数,它是随机生成器的序列中均匀分布的 int 值。
int nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、 在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
Scanner类的使用
1.可以从键盘的输入数据
2.掌握的内容
构造函数
Scanner(inputStream source)构造一个新的Scanner,它生成的值从指定的输入流扫描
如:Scanner sc = new Scanner(System.in);
方法摘要
sc.nextInt()获取整型数据
sc.nextLine获取字符串数据
Java Study For Seven Day( 面向对象三)的更多相关文章
- Java学习笔记10(面向对象三:接口)
接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...
- 20165222《Java程序设计》——实验二 面向对象程序设计
20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...
- Java第五次作业--面向对象高级特性(抽象类与接口)
Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...
- Java第四次作业——面向对象高级特性(继承和多态)
Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...
- Python面向对象三要素-继承(Inheritance)
Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...
- Java第四次作业—面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
- Java中获取键盘输入值的三种方法
Java中获取键盘输入值的三种方法 Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...
- JAVA中常用需要设置的三个环境变量(JAVA_HOME、CLASSPATH、PATH)
JAVA中常用需要设置的三个环境变量: JAVA_HOME.CLASSPATH.PATH (一) 配置环境变量:(相对路径) 1. JAVA_HOME=x:/jdk1.6.0 2. 用%JAVA_HO ...
- Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)
♣下载安装tomcat7 ♣设置启动和关闭 ♣设置用户名和密码 ♣发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末 ...
- Java自己动手写连接池三
Java自己动手写连接池三,核心代码; package com.kama.cn; import java.sql.Connection;import java.util.ArrayList;impor ...
随机推荐
- docker image 变小的办法
https://www.docker.com/blog/intro-guide-to-dockerfile-best-practices/ https://medium.com/sciforce/st ...
- 推荐一款流量录制回放工具:jvm-sandbox-repeater
在软件开发和测试过程中,我们经常会遇到需要对网络请求进行录制和回放的需求,以便进行调试.测试和分析.为了模拟真实的用户请求,我们通常会使用各种流量录制回放工具来记录并重放网络请求. 其中,jvm-sa ...
- ASP.NET Core – Try Preview
前言 .NET 7 已经来到 RC 阶段了. 通常 RC 就是我们 (写库的人) 要入场的时候了. 有发现 Bug 要尽可能在这段期间提交. 不然后患无穷. 这篇主要就是来讲讲如果测试 RC 版本的 ...
- 三牧校队训练题目 Solution
前置知识: 搜索 队列 栈 递归 (提高难度)记忆化搜索 T1:P1226 [模板]快速幂 暴力想法:\(a\times a\) 进行 \(b\) 次,每次 \(a\times a\mod p\). ...
- 应聘软件测试 HR 会问到哪些问题?收藏这一篇就够了!
1.你还有收到其他offer吗? 其实hr问你offer情况,是对你感兴趣,想要进一步了解你,看下你的市场竞争力. 但注意不要太坦诚的说:我还没有offer或者收到两个offer还想对比对比:也不要撒 ...
- SuperMap流数据应用技术方案
流数据应用技术方案针对流数据应用场景,针对流数据的海量.多源.持续等特征,进行持续地获取相关的动态位置,以及持续地分析.处理和挖掘. 本章沿用基于单机SuperMap iServer环境,介绍流数据处 ...
- 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解.PostgreSQL的主要结构如下: 一.存储结构 PG数据存储结构分为:逻辑存储结构和 ...
- SpringCloud入门(四)Ribbon负载均衡
一.Ribbon负载均衡原理SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的. SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTempl ...
- Failed to connect to github.com port 443: Connection refused问题解决
解决办法: 1.找到github的ip地址:查找链接 2.找到本地的hosts文件.我的hosts文件路劲为:C:\Windows\System32\drivers\etc 3.在hosts文件最后添 ...
- 一文搞懂SaaS业务架构:价值流、业务能力、业务流程、业务对象、组织架构
1 目标与步骤 2 价值流分析 2.1 从价值主张到价值流 2.2 价值流的概念 2.2 价值流如何识别? 2.3 价值流阶段如何识别? 3 业务流程 3.1 业务流程的概念 3.2 端到端流程 3. ...