JAVA自学笔记(4)
发现JAVA的有趣
Day1 继承不是"继承"
1.0 继承的格式

public class FU {
public void method()
{
System.out.println("Good night!");
}
}
public class ZI extends FU {
}
public class Practice {
public static void main(String[] args) {
ZI zi=new ZI();
zi.method();
}
}
打印结果:
Good night!
2.0 继承中成员变量的访问特点

public class FU {
int num=10;
int numfu=100;
public void methodfu()
{
System.out.println(num);
}
}
public class ZI extends FU {
int num=20;
int numzi=200;
public void methodzi()
{
System.out.println(num);
}
}
public class Practice {
public static void main(String[] args) {
ZI zi=new ZI();
FU fu=new FU();
System.out.println(zi.numfu);//
System.out.println(zi.numzi);//200
//第一种
System.out.println(zi.num);//20;
System.out.println(fu.num);//10
//第二种
zi.methodzi();//
fu.methodfu();//
zi.methodfu();//
}
}
3.0 区分子类方法中重名的三种

public class ZI extends FU {
int num=20;
public void methodzi()
{
int num=100;
System.out.println(num);//
System.out.println(this.num);//
System.out.println(super.num);//
}
}
4.0 方法的覆盖重写


继承中方法的覆盖重写 (典型事例)
收旧手机!报废手机!手机换盆!换剪子!换菜刀!
public class Oldphone {
public void call()
{
System.out.println("didi~主人的电话来啦");
}
public void send()
{
System.out.println("叮咚! 有一条新信息");
}
public void show()
{
System.out.println("显示来电");
System.out.println("来电铃声");
}
}
public class Newphone extends Oldphone {
@Override
public void show(){
super.show();
System.out.println("显示姓名");
System.out.println("显示头像");
}
}
public class Phone {
public static void main(String[] args) {
Oldphone oldphone=new Oldphone();
Newphone newphone=new Newphone();
System.out.println("老手机的功能:");
oldphone.call();
oldphone.send();
oldphone.show();
System.out.println("=============");
System.out.println("新手机的功能:");
newphone.call();
newphone.send();
newphone.show();
}
}
打印结果:
老手机的功能:
didi~主人的电话来啦
叮咚! 有一条新信息
显示来电
来电铃声
=============
新手机的功能:
didi~主人的电话来啦
叮咚! 有一条新信息
显示来电
来电铃声
显示姓名
显示头像
5.0 继承中构造方法的访问特点

6.0 Java 继承的特点

6.0 继承的案例 (群主发红包啦 快去抢!)
首先 对案例的分析

抢红包的实现
public class User {
private int money;
private String name;
public User(){};
public User(int money, String name) {
this.money = money;
this.name = name;
}
public void show()
{
System.out.println("我叫"+getName()+" 我还有:"+getMoney());
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.util.ArrayList;
public class Owner extends User{
public Owner() {
super();
}
public Owner(int money, String name) {
super(money, name);
}
public ArrayList<Integer> send(int sendmoney,int count)//发多少 发几份
{
ArrayList<Integer> list=new ArrayList<>();
int totalmoney=super.getMoney();//当前余额
if(totalmoney<sendmoney)
{
System.out.println("余额不足!");
return list;
}
super.setMoney(totalmoney-sendmoney);
int ave=sendmoney/count;
int mod=sendmoney%count;//余数放在最后一个红包
for(int i=0;i<count-1;i++)
{
list.add(ave);
}
list.add(ave+mod);
return list;
}
}
import java.util.ArrayList;
import java.util.Random; public class Member extends User { public Member() {
super();
}
public Member(int money, String name) {
super(money, name);
}
public void receive(ArrayList <Integer> list)
{
int index=new Random().nextInt(list.size());//0~list.size()-1
int datamoney=list.remove(index);
int leftmoney=super.getMoney();//原有的金额
super.setMoney(datamoney+leftmoney);
}
}
import java.util.ArrayList;
public class Hongbao {
public static void main(String[] args) {
Owner owner=new Owner(100,"方时赫");
Member one=new Member(0,"金硕珍");
Member two=new Member(0,"金南俊");
Member three=new Member(0,"闵玧其");
owner.show();
one.show();
two.show();
three.show();
System.out.println("===============");
ArrayList<Integer> list=owner.send(20, 3);
one.receive(list);
two.receive(list);
three.receive(list);
owner.show();
one.show();
two.show();
three.show();
}
}
打印结果:
我叫方时赫 我还有:100
我叫金硕珍 我还有:0
我叫金南俊 我还有:0
我叫闵玧其 我还有:0
===============
我叫方时赫 我还有:80
我叫金硕珍 我还有:6
我叫金南俊 我还有:8
我叫闵玧其 我还有:6
Day3 抽象???
1.0 抽象类的方法

举个列子778吧
public abstract class Animals {
public abstract void eat();
}
public class Dog extends Animals{
public void eat(){
System.out.println("狗吃骨头");
}
}
public class Cat extends Animals{
public void eat(){
System.out.println("猫吃鱼");
}
}
public class Practice {
public static void main(String[] args) {
Cat cat=new Cat();
Dog dog=new Dog();
cat.eat();
dog.eat();
}
}
打印结果:
猫吃鱼
狗吃骨头
2.0 抽象类的使用的注意事项


Day 4 欢迎来到接口的世界!
1.0 接口的定义

2.0 接口的抽象方法的定义

3.0 接口的抽象方法的使用

public interface Myinter {
public abstract void method1();
public abstract void method2();
public abstract void method3();
}
public class Interfaced implements Myinter {//实现类
@Override
public void method1() {
System.out.println("这是第一个方法!");
}
@Override
public void method2() {
System.out.println("这是第二个方法!");
}
@Override
public void method3() {
System.out.println("这是第三个方法!");
}
}
public class Practice {
public static void main(String[] args) {
Interfaced inte=new Interfaced();
inte.method1();
inte.method2();
inte.method3();
}
}
打印结果:
这是第一个方法!
这是第二个方法!
这是第三个方法!
4.0 接口的默认方法的定义

5.0 接口的默认方法的使用

public interface Myinter {
public abstract void method1();
public abstract void method2();
public abstract void method3();
public default void method4()
{
System.out.println("新增加的方法!");
}
}
public class Interfaced implements Myinter {//实现类
@Override
public void method1() {
System.out.println("这是第一个方法!");
}
@Override
public void method2() {
System.out.println("这是第二个方法!");
}
@Override
public void method3() {
System.out.println("这是第三个方法!");
}
@Override
public void method4() {
System.out.println("这是覆盖重写的 方法!");
}
}
public class Practice {
public static void main(String[] args) {
Interfaced inte=new Interfaced();
inte.method1();
inte.method2();
inte.method3();
inte.method4();
}
}
打印结果:
这是第一个方法!
这是第二个方法!
这是第三个方法!
这是覆盖重写的 方法!
6.0 接口的静态方法的定义

7.0 接口的静态方法的使用

public interface Myinter {
public static void methodstatic()
{
System.out.println("这是一个静态方法");
}
}
public class Myinterface implements Myinter {
}
public class Main {
public static void main(String[] args) {
//错误写法 Myinterface.methodstatic();
Myinter.methodstatic();
}
}
打印结果:
这是一个静态方法
8.0 接口的私有方法的定义

public interface Myinter {
public default void method1()
{
System.out.println("这是一个默认方法1");
method3();
}
public default void method2()
{
System.out.println("这是一个默认方法2");
method3();
}
private void method3()
{
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
}
public interface Myinter {
public static void method1()
{
System.out.println("这是一个默认方法1");
method3();
}
public static void method2()
{
System.out.println("这是一个默认方法2");
method3();
}
private static void method3()
{
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
}
9.0 接口中常量定义和使用

10.0 接口的小结

11.0 继承父类并实现多个接口

12.0 接口的多继承

JAVA自学笔记(4)的更多相关文章
- JAVA自学笔记09
JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...
- JAVA自学笔记05
JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...
- JAVA自学笔记06
JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...
- JAVA自学笔记04
JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...
- JAVA自学笔记07
JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...
- JAVA自学笔记10
JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...
- JAVA自学笔记13
JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...
- JAVA自学笔记11
JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...
- JAVA自学笔记14
JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...
- JAVA自学笔记12
JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...
随机推荐
- 使用python实现模拟掷骰子数据分析
Data:2020/4/8 主题:模拟实现掷骰子数据分析 编译环境:pycharm 库:pygal 说明: code 1:创建一个掷骰子类对象,类方法获得掷骰子随机数1-6,默认6个面,模拟20次将结 ...
- Hadoop入门学习笔记-第二天 (HDFS:NodeName高可用集群配置)
说明:hdfs:nn单点故障,压力过大,内存受限,扩展受阻.hdfs ha :主备切换方式解决单点故障hdfs Federation联邦:解决鸭梨过大.支持水平扩展,每个nn分管一部分目录,所有nn共 ...
- dp (1)
D - Tree of Tree ZOJ - 3201 这个题目我开始是这么定义的dp[i][j][0] dp[i][j][1] 表示对于第i个节点还有j个的选择 0 代表不选这个节点,1 代表选这个 ...
- Java常见的集合的数据结构
数据结构 数据结构__栈:先进后出 栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加.查找.删除等操作. 简单的说:采用该结构的 ...
- 你真的会用Flutter日期类组件吗
Flutter系统提供了一些日期选择类组件,比如DayPicker.MonthPicker.YearPicker.showDatePicker.CupertinoDatePicker等,其中前4个为M ...
- grep 如何自动标注颜色
首先 最后一行加入 保存 然后source ~/.bashrc 然后来试一下效果
- pycharm中的TODO注释用法
pycharm 中可以在# 后面加TODO提示自己后续的开发动作. 点击pycharm又下角的小标签,会弹出一个列表,选择TODO选项. 进入TODO选项,可以看见所以设置的TODO,选择一个TODO ...
- webpack 和 webpack-cli 安装和使用中出现的问题
因为国内防火墙的原因,建议首先安装 cnpm: 使用 npm install cnpm -g 或者 npm install -g cnpm --registry=https://registry.np ...
- 使用elasticsearch搭建自己的搜索系统
什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能. 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁 ...
- C语言进阶_分支语句
勇气是在压力之下展现出的优雅. 一.简介 C语言提供了两种分支语句可供选用,一是if.......else....类型,一种是Switch语句.两种语句都能根据条件判断结果执行不同的指令,且能进行替换 ...