以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言
继承和多态
使用多态的核心是使用上转型对象,即将Abstract 类声明对象作为其子对象的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
个人理解:其实上转型对象就是一个父类对象,通过子类引用,转换为上转型对象,它可以调用子类重写的方法和继承的方法,也可以调用子类隐藏的变量和继承的变量,使程序更加的简洁。
例:
<span style="font-size:18px;"><span style="color:#000000;">package com.CCAr;
abstract class Animal{
public abstract void cry();
public abstract String AnimalsName();
}
class Simple{
public void playGround(Animal animal){
System.out.println(animal.AnimalsName()+"的声音是:");
animal.cry();
}
}
class Dog extends Animal{
public void cry(){
System.out.println("汪汪!");
}
public String AnimalsName(){
return "狗";
}
}
class Cat extends Animal{
public void cry(){
System.out.println("喵喵!");
}
public String AnimalsName(){
return "猫";
}
}
public class CCAr {
public static void main(String []args){
Simple animal=new Simple();
Animal ani=new Dog();
animal.playGround(ani);
ani=new Cat();
animal.playGround(ani);
}
}</span>
</span>
答案:
<span style="font-size:18px;">狗的声音是:
汪汪!
猫的声音是:
喵喵!
</span>
接口
接口的声明
interface 接口的名字
接口体中只有抽象方法,没有普通方法,接口体中所有的变量和方法的访问权限一定都是public(允许省略public/abstract修饰符)
接口的使用
用关键字implement来声明自己实现一个或多个接口(多个接口中间用“,”隔开);
例:class A implement B,C,D;
如果一个类实现了某个接口,那么这个类必须重写该接口中的所有方法。
重写的方法的访问权限一定要明显的用public来修饰。
例:
<span style="font-size:18px;">package com.Interface;
interface Computer{
int Max=100;
int f(int x);
}
interface Computere{
void max(int x,int y);
}
class China implements Computer,Computere{
int number;
public int f(int x){
int sum=0;
for(int i=1;i<=x;i++){
sum+=i;
}
return sum+Max;
}
public void max(int x,int y){
//return x>y?x:y;
System.out.println("HHHH!");
}
}
class Japan implements Computer{
int number;
public int f(int x){
return 66+x;
}
}
public class Interface {
public static void main(String []args){
China zhang=new China();
Japan henlu=new Japan();
zhang.number=991898+Computer.Max;
henlu.number=941448+Computer.Max;
zhang.number=100+1;
zhang.max(1, 2);
System.out.println("number:"+zhang.number+"求和"+zhang.f(100));
System.out.println("number:"+henlu.number+"求和"+henlu.f(100));
System.out.println(Computer.Max);
}
}</span>
答案:
<span style="font-size:18px;">HHHH!
number:101求和5150
number:941548求和166
100</span>
类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用.
如果一个类声明实现一个接口,但没有重写接口中的所有的方法,那么这个类必须是abstract类。
个人理解:如果把类比作是一辆车的话,那么接口就可以比作是一些汽车零件,通过实现这些接口,可以让这辆车更加的强大。
例1:
<span style="font-size:18px;">package com.ljjiekou;
interface Free{
public void shouFree();
}
interface Tiao{
public void tiaoWen();
}
class Chucar implements Free,Tiao{
public void shouFree(){
System.out.println("两元!");
}
public void tiaoWen(){
System.out.println("hair!");
}
}
class Tuocar implements Free{
public void shouFree(){
System.out.println("不差钱儿!");
}
}
public class ljjiekou {
public static void main(String []args){
Chucar chucar=new Chucar();
chucar.shouFree();
chucar.tiaoWen();
Tuocar tuocar=new Tuocar();
tuocar.shouFree();
Free free=new Chucar();
free.shouFree();
//free.tiaoWen();
free=new Tuocar();
free.shouFree();
}
}
</span>
答案:
<span style="font-size:18px;">两元!
hair!
不差钱儿!
两元!
不差钱儿!</span>
例2
<span style="font-size:18px;">package com.jkdt;
interface Advertisement{
public void showAdvertisement();
public String getAd();
}
class Adboard{
public void show(Advertisement adver){
System.out.println(adver.getAd());
adver.showAdvertisement();
}
}
class A implements Advertisement{
public void showAdvertisement(){
System.out.println("没有最好,只有更好!");
}
public String getAd(){
return "飞利浦";
}
}
public class jkdt {
public static void main(String []args){
Adboard adboard = new Adboard();
adboard.show(new A());
}
}</span>
答案:
<span style="font-size:18px;">飞利浦
没有最好,只有更好!<span style="color:#000000;">
</span></span>
接口与abstract的比较
(1)abstaact类和接口都可以有abstract方法。
(2)接口中只可以有常量,不能有变量,而abstract类中既可以有常量也可以有变量。
(3)abstract 类中可以有非abstract 方法,但是接口不可以。