JAVA自学笔记(4)
YUNNEN 人气:0发现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);//100 System.out.println(zi.numzi);//200 //第一种 System.out.println(zi.num);//20; System.out.println(fu.num);//10 //第二种 zi.methodzi();//20 fu.methodfu();//10 zi.methodfu();//10 } }
3.0 区分子类方法中重名的三种
public class ZI extends FU { int num=20; public void methodzi() { int num=100; System.out.println(num);//100 System.out.println(this.num);//20 System.out.println(super.num);//10 } }
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 接口的多继承
加载全部内容