高官老公表轻浮,小赚网,高达独角兽05
1、Error:(28, 1) java: 无法将类 Stu中的构造器 Stu应用到给定类型;
需要: int,java.lang.String,float
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
修改:构造方法不会继承,当父类有带参构造方法时,子类要继承父类,父类需添加无参构造方法
2、继承:class 子类 extends 父类
子类拥有父类的属性和方法,父类的private修饰的属性不能被子类继承,若不希望子类继承父类的某个属性,则将该属性定义为private;之类最多直接继承一个父类,java所有类都是Object类的子类
3、重载:1.方法名相同 2.参数类型和个数至少一个不同 3.返回类型和修饰符可以不同
4、覆盖:子类有一个方法,与父类某方法的名称、返回类型、参数相同,则称子类方法覆盖父类方法;注:子类方法不能缩小父类方法的访问权限
5、多态:一个引用在不同情况下的多种状态,也可这样理解:通过指向父类的指针来调用不同子类中实现的方法;java允许父类的引用变量引用它的子类实例
这里写/* 作者:mys 功能:演示多态性 日期:2018/7/13 */ package cn.mys; public class Demo11 { public static void main(String []args) { /*Animal animal=new Animal(); animal.show(); Cat cat=new Cat(); cat.show(); Dog dog=new Dog(); dog.show(); */ /* 父类的引用变量引用它的子类 Animal an=new Cat(); an.show(); an=new Dog(); an.show();*/ Master master=new Master(); master.feed(new Cat(),new Fish()); master.feed(new Dog(),new Bone()); } } //食物 class Food { public void showName() { System.out.println("不知道什么名字"); } } //鱼类 class Fish extends Food { public void showName() { System.out.println("鱼类"); } } //骨头类 class Bone extends Food { public void showName() { System.out.println("骨头类"); } } //人类 class Master { //给动物喂食 public void feed(Animal an,Food f) { an.eat(); f.showName(); } } //父类Animal class Animal { public void show() { System.out.println("我是动物类!"); } //动物吃 public void eat() { System.out.println("我不知道吃什么!"); } } //子类Cat class Cat extends Animal { //覆盖父类 public void show() { System.out.println("我是猫类!"); } //猫吃鱼 public void eat() { System.out.println("猫吃鱼!"); } } //子类Dog class Dog extends Animal { //覆盖父类 public void show() { System.out.println("我是狗类!"); } //狗吃骨头 public void eat() { System.out.println("狗吃骨头!"); } }
6、约瑟夫问题
/* 作者:mys 功能:约瑟夫 日期:2018/7/13 */ /* 问题:设编号1 2 3 4....n的n个人围成一圈,约定编号为k的人开始从1报数, 数到m的那个人出列,他的下一位又从1开始报数,直到所有人出列。 */ package cn.mys; public class Josephu { public static void main(String []args) { //创建一个环形链表 CycLink cyclink=new CycLink(); cyclink.setLen(5);//链表长度 cyclink.createLink();//初始化链表 cyclink.show();//显示链表 cyclink.setK(2);//设置开始数数人的编号 cyclink.setM(2);//设置数到几的人退出 cyclink.play();//开始数数 } } //定义一个小孩类 class Child { int num;//编号 Child nextChild=null;//指向下一个小孩 public Child(int num)//初始化编号 { this.num=num; } } //定义环形链表 class CycLink { //定义一个指向第一个小孩的引用 Child firstChild=null; Child temp=null; int len=0; int k=0; int m=0; //设置m public void setM(int m) { this.m=m; } //设置k public void setK(int k) { this.k=k; } //设置链表大小 public void setLen(int len) { this.len=len; } //初始化循环链表 public void createLink() { for(int i=1;i<=len;i++) { if(i==1) { //创建第一个小孩 Child ch = new Child(i); this.firstChild=ch; this.temp=ch; } else if(i==len) { //创建最后一个小孩 Child ch=new Child(i); temp.nextChild=ch;//搭桥 temp=ch;//temp向下走一步 temp.nextChild=firstChild;//环形链表最后一个小孩指向第一个小孩 } else { //继续创建小孩 Child ch = new Child(i); temp.nextChild=ch;//搭桥 temp=ch;//temp向下走一步 } } } //显示链表 public void show() { Child temp=firstChild;//从第一个小孩开始 do { System.out.println(temp.num); temp=temp.nextChild; }while(temp!=firstChild); } //开始play public void play() { while(len!=1) { //1.找到开始数数的人 Child temp = firstChild; for (int i = 1; i < k; i++)//注意此处i!=k { temp = temp.nextChild; } //2.数m下 for (int j = 1; j < m; j++) { temp = temp.nextChild; } //找到要出圈小孩的前一个小孩 Child temp2 = temp;//temp2从temp开始 while (temp2.nextChild != temp)//找到temp2,其下一个小孩等于temp小孩 { temp2 = temp2.nextChild; } //3.将数到m的小孩退出圈 temp2.nextChild = temp.nextChild; temp = temp.nextChild;//temp指向下一个数数的小孩 this.len--; } //打印最后一个小孩 System.out.println("最后一个小孩:"+temp.num); } }
7、抽象类:当父类的方法不能确定时,用abstract关键字修饰该方法(抽象方法),该类(抽象类);当一个继承类的父类是抽象类的话,需要把抽象类中的所有方法全部实现
注意事项:
eg.abstract void aaa(){}错误
/* 作者:mys 功能:抽象类的必要性 日期:2018/7/13 */ package cn.mys; public class Demo12 { public static void main(String []args) { Cat cat=new Cat(); //Animal an=new Animal(); 抽象类不能被实例化 } } //父类Animal(抽象类) abstract class Animal { //叫 //abstract public void cry(); 抽象类不一定有抽象方法 // abstract public void cry(){} 抽象方法不能有主体 public void aaa()//抽象类中可以有实现了的方法:普通方法 { System.out.println("aaa"); } } //子类Cat // 当一个继承类的父类是抽象类的话,需要把抽象类中的所有方法**全部实现** class Cat extends Animal { //实现父类 public void cry() { //do nothing... } }
8、接口:给出一些没有内容的方法,封装到一起,某各类要使用的时候,根据具体情况写出方法,语法:class 类名 implements 接口{ 方法; 变量;}
注意事项:
/* 作者:mys 功能:接口(计算机 USB 相机 手机) 日期:2018/7/13 */ package cn.mys; public class Demo13 { public static void main(String []args) { //在接口中定义的变量通过*接口名.变量名*调用 System.out.println(Usb.a); //创建一个计算机 Computer computer=new Computer(); //创建一个相机 Camera camera=new Camera(); //创建一个手机 Phone phone=new Phone(); //使用接口 computer.useUsb(camera); computer.useUsb(phone); //Usb Usb=new Usb();接口不能实例化 } } //usb接口 interface Usb { //接口可以定义变量,且变量是static,因此在定义时也要初始化 int a=1; //声明两个方法 //开始工作 public void start(); //停止工作 public void stop(); //public void stop(){} 接口中所有方法不能有主体 } //一个类 class Bbb { } //一个接口,不能继承其他的类 /*interface Aaa extends Bbb { }*/ //一个接口 interface Aaa { } //编写相机类,并实现Usb接口 //一个重要原则:当一个类实现了一个接口,就要把该接口的方法都实现 class Camera implements Usb,Aaa//一个类可以实现多个接口 { //实现两个方法 public void start() { System.out.println("相机开始工作"); } public void stop() { System.out.println("相机停止工作"); } } //编写手机类 class Phone implements Usb { //实现两个方法 public void start() { System.out.println("手机开始工作"); } public void stop() { System.out.println("手机停止工作"); } } //编写计算机类 class Computer { //使用Usb接口 public void useUsb(Usb usb) { usb.start(); usb.stop(); } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论