3.28学习总结

2024-03-29 15:28
文章标签 学习 总结 3.28

本文主要是介绍3.28学习总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

java

封装

封装体现了java的面向对象的特点,用户不用知道程序是如何运行的,只用按照所给的格式输入参数,便可得到对应的结果.

一个完整的封装需要每个实例变量都用private来修饰并拥有相应的public getter和setter方法.

代码

 public class girl {private int age;public static int gender;public girl() {}public girl(int age) {int t;if (age >= 18 && age <= 50)this.age = age;elseSystem.out.println("错误");}public void setAge(int x) {if (x >= 18 && x <= 50)age = x;elseSystem.out.println("错误");}public int getAge() {if (age == 0)System.out.println("请先赋值");elsereturn age;return 0;}}

继承

类的继承通过extends关键字来实现,继承的类被称为子类,被继承的类被称为父类,子类拥有父类的全部成员变量和方法.

格式为

修饰符 class SubClass extends SuperClass{//类定义部分
}
//修饰符 public等
//SubClass 子类名
//SuperClass 父类名

每个子类只有一个直接父类但可以有无数个间接父类(父类的父类).

子类可以重写父类的方法,重写之后只有在子类方法中才可以调用被覆盖的父类方法(其他地方调用的是子类方法).

class BaseClass{public void test(){...}               //父类方法
}
class SubClass extends BaseClass{public void test(){                   //重写父类方法super.test();                         //调用父类方法}
}

重写时要注意重写的方法要遵循一下规则:

1.方法名和参数不变

2.返回值类型要和父类方法一样或是父类返值类型的子类型.

3.重写方法的访问控制修饰符不能比被重写方法更严格(如果父类方法是public,则重写方法不能定义为private).


public class women {private int age;public static int gender;public int getAge() {                           //父类方法if (age == 0)System.out.println("请先赋值");elsereturn age;return 0;}}class girl extends women {public int getAge() {                           //重写父类方法System.out.println(super.getAge());return 0;}}

构造器

子类不会获得父类的构造器,但子类构造器里可以调用父类构造器.

子类通过super来调用父类的构造器,子类还可以通过this来调用本类的构造器,调用格式为

this(参数)    super(参数).


public class women {private int age;public static int gender;public women() {}public women(int age) {if (age >= 18 && age <= 50)this.age = age;elseSystem.out.println("错误");}
}class girl extends women {private int weight;public girl(int weight, int age) {super(age);this.weight = weight;}
}

多态

Java 引用变量有两个类型: 一个是编译时类型, 一个是运行时类型。 编译时类型由声明该变量时使 用的类型决定,运行时类型由实际赋给该变量的对象决定。 如果编译时类型和运行时类型不一致,就可 能出现所谓的多态 (Polymorphism).

多态的优势

当你需要对有着同一个父类的子类进行同一个操作的时候参数的设置就成了难题,你要对每一个子类都写一个方法供他们使用,但这样代码就会显得非常的臃肿,拥有着相同功能的代码出现了很多次,导致我们以后如果想修改功能我们就要对所有的方法进行修改,很麻烦,这时我们可以通过多态来解决.

多态的基本定义为 :   父类  变量名=new 子类();

子类其实是一种特殊的父类, 因此 Java 允许把一个子类对象直接赋给一个父类引用变量, 无须任何类型转换,或者被称为向上转型(upcasting) ,向上转型由系统自动完成。

public class person {private String name;private int age;public person() {}public person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void show(){System.out.println(name+","+age);}
}
public class student extends person {@Overridepublic void show() {System.out.println("学生的信息:"+getName()+","+getAge());}
}
public class administrator extends person{@Overridepublic void show() {System.out.println("管理员的信息:"+getName()+","+getAge());}
}
public class teacher extends person {@Overridepublic void show() {System.out.println("老师的信息:"+getName()+","+getAge());}
}

在以上这三个类中student,teacher和administrator都是person的子类,都分别重写了show方法(输出类中成员变量的值).

public class Main {public static void main(String[] args) {student a=new student();a.setAge(18);a.setName("张三");teacher b=new teacher();b.setAge(19);b.setName("李四");administrator c=new administrator();c.setAge(20);c.setName("王五");show(a);show(b);show(c);}public static void show(person p){p.show();}
}

运行结果

我们用父类来收这这三个子类的值就可以完成分别输出这三个类中成员变量的值.

多态中调用成员变量的特点

变量调用:编译看左边,运行看左边.

编译时会看父类中是否有这个变量,如果没有会报错.

运行时实际获取的是父类中成员变量的值

方法调用:编译看左边,运行看右边.

编译时会看父类中是否有这个方法,如果没有会报错.

运行时会运行子类的方法,实际上是父类中定义了该方法,子类覆盖了父类的该方法.

public class Main {public static void main(String[] args) {animal a=new dog();System.out.println(a.name);a.show();}
}
class animal{String name="动物";public void show(){System.out.println("animal");}}
class dog extends animal{String name="狗";public void show(){System.out.println("dog");}
}

这篇关于3.28学习总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858948

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter