JAVA坎坷之路(4 day)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-6-23

面向对象之继承性

继承就是子女继承父母的财产

描述事物之间的所属关系

类的继承是在一个现有的类去构建一个新的类

构建出来的类,就是子类

子类继承了父类的方法,属性

子类也可以自定义方法,属性

注意点:

类只支持单继承

多个类可以继承一个父类

可以多层继承

晚上更新[滑稽]
面向对象之继承
定义了一个user类
并为其定义name和age属性
生成其get和set方法

public class User {
private String name;
private Integer age;

public void f(){
System.out.println("父类方法的"+name+"今年"+age+"岁了");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}
定义一个huluxia类
使用私有的private修饰符和static静态修饰符还有final修饰符
将其声明为一个常量对象
在main方法里调用huluxia类的a方法
a方法使用super直接调用了父类的两个set方法为其赋值
同时还使用了huluxia子类继承父类的f方法
如果没有重写f方法
那么会调用父类的f方法
下面重写了父类的f方法
并使用huluxia对象调用父类的属性为其赋值
最后main方法会调用重写的f方法
其原因是父类的f方法被子类重写的方法所覆盖

public class Huluxia extends User{
// final
// 使用final修饰的类不能有子类
// 使用final修饰的方法不能被子类重写
// 使用final修饰的变量是常量,不能被修改
// 一般来说常量是需要大写的,我这里就不大写了,主要是为了方便
private static final Huluxia huluxia = new Huluxia();

public static void main(String[] args) {
huluxia.a();
}
public void a(){
// 为父类属性赋值
// super可以调用父类的属性和方法
// this和super的区别
// this 访问本类的属性如果没有,则从父类查找
// super 直接访问父类
// this 访问本类的方法如果没有,则从父类查找
// super 直接访问父类
// this 调用本类构造方法,必须放在构造方法首行
// super 调用父类构造,必须放在子类构造方法首行
super.setName("凯特社区");
super.setAge(5);
// 如果没有重写父类方法,默认调用父类的方法
// 如果重写了父类方法,那么就调用子类重写的方法
huluxia.f();
}
//重写父类方法
// 注意点
// 子类重写的方法权限不能比父类严格
@Override
public void f() {
huluxia.setName("修改器");
huluxia.setAge(5);
System.out.println("子类重写父类方法的"+huluxia.getName()+"今年"+huluxia.getAge()+"岁了");
}
// 错误写法
// 父类是public 所以子类不能比public严格
// @Override
// private void f() {
// huluxia.setName("修改器");
// huluxia.setAge(5);
// System.out.println("子类重写父类方法的"+huluxia.getName()+"今年"+huluxia.getAge()+"岁了");
// }
}
4楼
呵呵二爷爷 2022-6-23
抽象类和接口

使用abstract关键字将Animal定义为一个抽象类
同时定义一个抽象方法
注意抽象方法也需要使用abstract修饰
定义一个dog类来继承animal抽象类
并实现其抽象方法

接口
与抽象类相似
不同的是
接口使用implements
接口可以实现多个
而抽象类使用的是继承
接口的出现克服了Java的单继承

5楼
呵呵二爷爷 2022-6-23
封装和继承的小案例分两部分封装r类和Calculate接口public class R { private Integer code; private String msg; private Double result; public R(Integer code, String msg, Double result) { this.code = code; this.msg = msg; this.result = result; } public R() { } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Double getResult() { return result; } public void setResult(Double result) { this.result = result; }}public interface Calculate {// 加 R add(int a,int b);// 减 R subtract(int a,int b);// 乘 R ride(int a,int b);// 除 R except(int a,int b);}

6楼
呵呵二爷爷 2022-6-23
第二部分
实现接口和测试
public class CalculateImpl implements Calculate {
@Override
public R add(int a, int b) {
if(a>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
if(b>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
double c = a+b;
return new R(200,"计算成功",c);
}

@Override
public R subtract(int a, int b) {
if(a>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
if(b>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
double c = a-b;
return new R(200,"计算成功",c);
}

@Override
public R ride(int a, int b) {
if(a>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
if(b>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
double c = a*b;
return new R(200,"计算成功",c);
}

@Override
public R except(int a, int b) {
if(a>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
if(b>=Integer.MAX_VALUE){
return new R(202,"数值太大",0.0);
}
if(b==0){
return new R(202,"除数不能为0",0.0);
}
double c = a/b;
return new R(200,"计算成功",c);
}
}

7楼
呵呵二爷爷 2022-6-23
内容过多
第三部分
测试
import java.util.Scanner;

public class Huluxia{
public static void main(String[] args) {

Scanner c = new Scanner(System.in);

CalculateImpl ca = new CalculateImpl();

System.out.println("输入第一个数字:");
int a=c.nextInt();
System.out.println("输入运算符号(+-*/):");
String d=c.next();
System.out.println("输入第二个数字:");
int b=c.nextInt();

if(d.equalsIgnoreCase("+"))
{
R add = ca.add(a, b);
System.out.println("code:"+add.getCode()+"
msg:"+add.getMsg()+"
result:"+add.getResult());
}
else if(d.equalsIgnoreCase("-"))
{
R add = ca.subtract(a, b);
System.out.println("code:"+add.getCode()+"
msg:"+add.getMsg()+"
result:"+add.getResult());
}
else if(d.equalsIgnoreCase("*"))
{
R add = ca.ride(a, b);
System.out.println("code:"+add.getCode()+"
msg:"+add.getMsg()+"
result:"+add.getResult());
}
else if(d.equalsIgnoreCase("/"))
{
R add = ca.except(a, b);
System.out.println("code:"+add.getCode()+"
msg:"+add.getMsg()+"
result:"+add.getResult());
}
else
{
System.out.println("符号不正确");
}
}
}
8楼
bnh 2022-6-23
哥们儿加油,我也在自学
10楼
反感归途 2022-6-24
大哥今晚考试求助[呵呵]

评论

登录后才可发表内容
  • 主题

    23

  • 帖子

    325

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0490s Mem:2150Kb