ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第三周学习总结

2021-09-10 20:01:21  阅读:99  来源: 互联网

标签:总结 String 子类 第三周 class 学习 父类 public 属性


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

(一)封装:

                不要直接对对象属性进行赋值,而是通过设置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;
			}
		}

	}

}

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

标签:总结,String,子类,第三周,class,学习,父类,public,属性
来源: https://blog.csdn.net/m0_50356104/article/details/120228170

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有