热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第三周学习总结

一、三大特性-封装、继承、多态(一)封装:                不要直接对对象属性进行赋值,而是通过设置setget方法进行赋值和取值                好处


一、三大特性-封装、继承、多态

(一)封装:

                不要直接对对象属性进行赋值,而是通过设置set/get方法进行赋值和取值

                好处:隐藏了内部实现的细节,提高安全性和复用性

                步骤:1.将赋值和取值变为set/get方法

                           2.属性私有化

        代码如下

class Book{
private String author;
private double price;
//set+属性名首字母大写,参数与属性名一致
public void setAuthor(String author) {
this.author = author;
}
//set+属性名首字母大写,返回值类型和对应属性一致
public String getAuthor() {
return author;
}
}

注意:封装是将属性封装成方法,所以方法的东西都能使用的,可以通过传参,方法体内设置准入条件等来尽量保证数据的正确性、合理性


(二)继承:

                 两个类之间满足is a的关系,就可以使用继承,子类可以继承父类的属性,方法

                关键字extends

              优点:简化代码量,提高复用性  

                常见问题:继承能否有多继承(能不能有多个父亲)?    不能   (单继承)  

                                  能否有多级继承(有父亲,父亲的父亲)?         能     (间接继承)

代码如下

//祖父类
public class GranderFather {
String nameString;
String ageString;
String tuding;
String moneyString;
public void eat() {
System.out.println("吃饭");
}
}

public class Father extends GranderFather{
//父亲类继承祖父类
}

//儿子类继承父亲类,同时自身有自己独有的属性
public class Son extends Father{
String hairString;
}

//测试类,实例化儿子类,能调用父类继承的父类的方法和属性,也可以调用自身的属性和方法
public class Test {
public static void main(String[] args) {
Son son =new Son();
son.ageString="18";
son.eat();
son.mOneyString="2000";
son.hairString="red";
}
}

注意:不能被继承的情况:
                1.私有的特征和行为
                2.构造方法---最好测带参构造

另外,不管咋样都有个Object类(老祖宗类)

补充一:访问修饰符

 补充二:重写

                重写概述:1.子类方法和父类方法完全一致:返回值类型,方法名,参数列表
                                  2.子类权限大于等于父类权限

                应用场景:当父类的方法不适用子类时,子类可重写父类的方法;

                                那么调用时调的是子  类重写方法

 补充三:super关键字(以及和this的异同)

                super关键字的用法与this相似:
                this:当前对象 
                用法:
                this.属性: 调当前对象的属性,如果当前对象没有该属性,根据继承性可调父类的属性                 this.方法():同上  
                this():调当前对象的构造方法
                super:父类对象  
                用法:
                super.属性--调父类的属性
                super.方法()--调父类的方法
                super()----调父类的构造方法


 (三)多态(重点):

                 万变不离其宗:父类引用指向子类对象,即形成了多态

                多态的前提: 一定要有继承关系


        多态方式1: 直接的父类引用指向子类对象


                        (父类引用指向子类对象,可调用子类重写方法)

                        父类引用可以调父类的方法;如果子类有重写方法,则优先调子类重写方法
                              父类引用不能调子类独有的方法

代码如下(======分隔不同的类)

public class Animal {
public void jiao() {
// TODO 自动生成的方法存根
System.out.println("叫声种类太多");
}
}
=======================================
public class Dog extends Animal{
@Override
public void jiao() {
System.out.println("汪汪汪~好兄弟快带我回家");
}
}
=======================================
public class Cat extends Animal{
@Override
public void jiao() {
System.out.println("喵喵喵~铲屎官快带我回家");
}
}
=======================================
public class Bird extends Animal{
@Override
public void jiao() {
System.out.println("啾啾啾~快带我回家");
}
}
=======================================
//好兄弟们我就没写注释了,应该能看懂吧
//先定义了父类引用,在循环里面再通过不同的输入结果指向不同的子类对象
//这样父类可以不做变更,有啥要加的,再加个别的动物来卖,生成一个类继承就完事了
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scanner = new Scanner(System.in);
System.out.println("请输入想要购买的宠物:1猫,2狗,3鸟");
Animal animal;
int i;
int cOndition= 0;
while (condition <= 3) {
i = scanner.nextInt();
switch (i) {
case 1:
animal = new Cat();
animal.jiao();
condition++;
break;
case 2:
animal = new Dog();
animal.jiao();
condition++;
break;
case 3:
animal = new Bird();
animal.jiao();
condition++;
break;
default:
System.out.println("不买别捣乱,穷鬼");
condition++;
break;
}
}
}
}

还未总结完,回头再补上【狗头保命】



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
梁琦rx1987_865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有