发现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)的更多相关文章

  1. JAVA自学笔记09

    JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...

  2. JAVA自学笔记05

    JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...

  3. JAVA自学笔记06

    JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  4. JAVA自学笔记04

    JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...

  5. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  6. JAVA自学笔记10

    JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...

  7. JAVA自学笔记13

    JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...

  8. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  9. JAVA自学笔记14

    JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...

  10. JAVA自学笔记12

    JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...

随机推荐

  1. RabbitMQ的使用(一)- RabbitMQ服务安装

    RabbitMQ的使用(一)- RabbitMQ服务安装 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/12769627.ht ...

  2. Java——Java连接Jira,创建、修改、删除工单信息

    还不了解Jira是什么的同学可以看一下这篇文章:https://www.cnblogs.com/wgblog-code/p/11750767.html 本篇文章主要介绍如何使用Java操作Jira,包 ...

  3. 王颖奇 20171010129《面向对象程序设计(java)》第十二周学习总结

    实验十二  图形程序设计 理论: 10.1 AWT与Swing简介 10.2 框架的创建10.3 图形程序设计10.4 显示图像 (具体学习总结在最后) 实验: 实验时间 2018-11-14 1.实 ...

  4. OpenWrt(LEDE)2020.4.29更新 UPnP+NAS+多拨+网盘+DNS优化+帕斯沃 无缝集成+软件包

    交流群:QQ 1030484865 电报:  t_homelede   固件说明 基于Lede OpenWrt R2020.4.8版本(源码截止2020.4.29)Lienol Feed及若干自行维护 ...

  5. 【Scala】利用Akka的actor编程模型,实现2个进程间的通信

    文章目录 步骤 一.创建maven工程,导入jar包 二.master进程代码开发 三.worker进程代码开发 四.控制台结果 步骤 一.创建maven工程,导入jar包 <propertie ...

  6. 【HDU4990】递推式

    题目大意:给定序列 1, 2, 5, 10, 21, 42, 85, 170, 341 …… 求第n项 模 m的结果 递推式 f[i]  = f[i - 2] + 2 ^ (i - 1); 方法一:  ...

  7. IntelliJ Idea14 创建Maven多模块项目,多继承,热部署配置总结(三)

    pom.xml中repositories.pluginRepository的作用 pom.xml中repositories标签的作用是: 用来配置maven项目的远程仓库.示例如下: <repo ...

  8. Mysql 常用函数(1)- 常用函数汇总

    Mysql常用函数的汇总,可看下面系列文章 Mysql常用函数有哪几类 数值型函数 字符串型函数 日期时间函数 聚合函数 流程控制函数 数值型函数 函数名称 作用 ABS 求绝对值 SQRT 求二次方 ...

  9. 题解 P4296 【[AHOI2007]密码箱】

    由题意有 \(x^2\equiv 1\;mod\;n\) 对题目的公式进行变形 \(x^2-1=k\times n\) \((x+1)(x-1)=k\times n\) 由唯一分解定理,我们构造\(a ...

  10. 【雕爷学编程】Arduino动手做(59)---RS232转TTL串口模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...