Java学习_day07_类的构造器代码块继承封装多态

文章目录

  • 构造器
    • 格式
    • 注意点
    • 使用
  • 代码块
    • 格式
    • 注意
  • 继承
    • 格式
    • 注意点
  • 封装
      • 声明包
      • 导包
      • 注意点
    • 访问修饰符
  • 多态
    • 格式
    • 注意点
    • 代码演示

构造器

Java中每个类都至少有一个构造器,当程序员没有明确编写构造器时,Java编译器会自动为类添加一个无参的构造器。构造器通常用来完成对类的初始化。

格式

构造器的定义格式和方法类似,不同点在于构造器的名称必须为类名,且构造器没有返回值类型。

修饰符  class  类名{修饰符  类名(参数列表) throws 异常列表{语句;}
}

注意点

  • 一个类中可以有多个构造器,多个构造器之间构成重载(名称相同,但是参数列表不同)
  • 修饰符只能是public,protected,缺省和private

使用

构造器主要用来生成类的实例对象,通过 new 构造器(…)完成某个类的实例化。
当使用有参构造器时,通常使用和成员变量相同名称的形参,此时为了区分需要引入this关键字,用来表示对象。

public class ReactangleTest{public static void main(String[] args){Rectangle rect1 = new Rectangle();Rectangle rect2 = new Rectangle(12, 3);}
}
class Rectangle{int length;int width;public Rectangle(){}public Rectangle(int length,int width){this.length = length;this.width = width;}
}

代码块

代码块是指在类中,构造器,方法之外的{}包围的语句部分,用来初始化类。根据是否有static修饰符分为静态代码块和非静态代码块。

格式

[修饰符] 类名{[修饰符] 变量;// 代码块[static] {代码块语句;}// 构造器[修饰符] 类名([参数列表]) [throws 异常列表]{构造器语句;};// 方法[修饰符] 返回值类型 方法名(参数列表) [throws 异常列表]{方法体语句;}
}

注意

  • 静态代码块比非静态代码块早执行
  • 类各个组成部分的执行顺序为:静态代码块-> 变量的显式赋值语句 -> 非静态代码块 -> 构造器
  • 静态代码块只执行一次,非静态代码块每创建一个对象就执行一次
  • 静态代码块中只能访问类变量和静态方法
  • 非静态代码块可以访问所有成员。
  • 涉及super时,父类先执行(子类的静态代码块比父类的非静态代码块先执行)。

演示代码:

public class TestClass {public static void main(String[] args) {Square square1 = new Square(12);System.out.println("******************************");Square square2 = new Square(12);}
}
class Shape{static {System.out.println("Shape静态代码块执行了");}{System.out.println("Shape非静态代码块执行了");}public Shape(){System.out.println("Shape无参构造器执行了");}
}class Square extends Shape{int length;{System.out.println("Square 非静态代码块执行了");}static{System.out.println("Square 静态代码块执行了");}public Square(int length){super();this.length = length;System.out.println("Square 有参构造器执行了");}}

在这里插入图片描述

继承

Java中为了实现代码复用,提出继承的概念。既一个类(子类)可以继承另外一个类(父类),这样子类就具有了父类的属性和方法。

格式

[修饰符] class 子类 extends 父类 {}

注意点

  • 创建子类时,Java默认调用父类的无参构造器,如果父类没有无参构造器,或者子类需要使用特定的父类构造器时,需要在子类构造器的第一行声明使用哪个父类构造器。
  • 当父类的某些方法执行逻辑不满足子类要求时,子类可以重写这个方法(方法名不变,形参列表不变,返回值类型等于或小于父类的,访问修饰符大于等于父类的,异常的类型等于或小于父类的,static,final修饰的方法不可被重写)
  • 当子类具有和父类相同的成员变量时,需要使用this和super来区分(默认用子类的)
  • Java是单继承的,既每个类只能有一个父类,一个父类可以有n个子类
  • java.lang.Object是所有类的父类

代码演示:

class Person{String id;  // 身份证号String name;int age;public Person(){}public Person(String id,String name,int age){this.id = id;this.name = name;this.age = age;}public void detail(){System.out.println("我是: " + name + ", 今年: " + age + ", 身份证号为: " + id);}
}class Student extends Person{String id; // 学号public Student(){super();}public Student(String id, String name, int age, String stud){super(id,name,age);this.id = stud;}
//  重写方法public void detail(){super.detail();System.out.println("我的学号为: " + this.id);}
}

封装

封装就是将代码一类的形式提供,并且针对每个类和类的成员提供访问权限,实现代码的封闭和管理。

包主要用来解决类重名的问题。包本质上就是不同的文件夹。

声明包

在java文件的开头通过 package 包名声明包,表示文件中创建的类都隶属于这个包。

导包

通过import 包名.类名将其他包中的类导入。
导入包中多个类时,通过import 包名.*将包下所有的类导入。

注意点

  • 同一个包中只能有唯一的类名
  • 当一个方法中使用到两个同名的类时,需要使用类的全称(包.类名)来区别
  • 多包时遵循倒置域名的规则,全部小写

访问修饰符

Java为类和类成员设置了不同的访问修饰符,根据不同的访问权限,有如下几个访问权限:public -> protected -> 缺失 -> private
各个修饰符的权限如下:

访问修饰符类内部同一个包中不同包的子类任何位置说明
public权限最高,可以在任何地方访问
protected此高权限,不能在不同包的非子类中访问
省缺次低权限,只能在包和类内部访问
private只能在类内部访问
访问修饰符属性构造器方法
public
protected
省缺
private

通常将属性设置为private,而外部通过setter和getter,对类的属性进行设置和访问。

多态

多态就是同一个对象,当指向不同的实例对象时具有不同的行为。
此处涉及两个知识点:

  1. 类的继承
  2. 子类重载父类的方法

格式

父类 变量名 = new 子类();
变量名.方法();

注意点

  • 多态只发生在有重载方法的子类上(属性不存在多态)。
  • 当需要使用子类额外的属性或者方法时,需要将变量进行向下转移
  • 为了安全转移,此处使用instanceof关键字来判断对象是否为某个类的实例对象

代码演示

public class TestClass {public static void main(String[] args) {Animal animal = new Dog(1,"Beta","yellow");animal.eat();if(animal instanceof Dog){Dog dog = (Dog)animal;dog.bite();}System.out.println("**************************************");Animal animal1 = new Animal(2,"Bear");animal1.eat();}
}class Animal{int age;String name;public Animal(){}public Animal(int age,String name){this.age = age;this.name = name;}public void eat(){System.out.println("Animal在吃事物");}
}class Dog extends Animal{String color;public Dog(){super();}public Dog(int age,String name,String color){super(age,name);this.color = color;}public void eat(){System.out.println("狗狗啃骨");}public void bite(){System.out.println("小狗汪汪叫");}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一下在微信小程序怎么发送优惠券

在微信小程序中,发送优惠券是一种常见的营销手段,它能够吸引用户购买商品或服务,提高销售业绩和用户忠诚度。本文将介绍在微信小程序中如何发送优惠券,包括优惠券的种类、发放方式、制作和推广等,帮助您更好地利用优惠…

沉痛悼念科研分公司

今天上班途中,遇到了上家公司的同事王强。他正准备去体检中心体检。几句寒暄之后,得知他是要入职选煤公司了。 我们所在的公司比较大,总公司下设有几十个分、子公司,我和他曾经在一家子公司——科研分公司。现在的科研分公司解散…

利用Vue2实现印章徽章组件

需要实现的组件效果&#xff1a; 该组件有设置颜色、大小、旋转度数和文本内容功能。 一、组件实现代码 <template><divclass"first-ring"v-bind"getBindValue":class"getStampBadgeClass":style"{ transform: rotate(${rotate}…

前端css介绍

CSS介绍 CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;它就会按照这个样式表来对文档进行格式化&#xff08;渲染&#xff09;。 CSS语法 CSS实例 每个CSS样式由两个组成部分&#xff1a;选择器和…

基于springboot实现游戏分享网站系统项目【项目源码+论文说明】

基于springboot实现游戏分享网站演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到…

超高真空变温台的真空压力和气氛精密控制解决方案

摘要&#xff1a;针对目前国内外显微镜探针冷热台普遍缺乏真空压力和气氛环境精密控制装置这一问题&#xff0c;本文提出了解决方案。解决方案采用了电动针阀快速调节进气和排气流量的动态平衡法实现0.1~1000Torr范围的真空压力精密控制&#xff0c;采用了气体质量流量计实现多…

centos关闭Java进程的脚本

centos关闭Java进程的脚本&#xff0c;有时候服务就是个jar包&#xff0c;关闭程序又要找到进程ID&#xff0c;在kill掉&#xff0c;麻烦&#xff0c;这里就写了个脚本 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.脚本如下 #!/bin/bash ps -ef | grep java | gre…

Midjourney干货篇 - 与AI对话,如何写好prompt

文章目录 1、语法2、单词3、要学习prompt 框架4、善用参数&#xff08;注意版本&#xff09;5、善用模版6、临摹7、垫图 木匠不会因为电动工具的出现而被淘汰&#xff0c;反而善用工具的木匠&#xff0c;收入更高了。 想要驾驭好Midjourney&#xff0c;可以从以下方面出发调整&…

基于springboot实现原创歌曲分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现原创歌曲分享平台演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理平台应运而生&am…

保护听力戴什么耳机比较好?开放式耳机能保护听力吗?

如果想要在保护听力的前提下戴耳机&#xff0c;那么我是推荐戴骨传导耳机的&#xff01;&#xff01;&#xff01; 所谓骨传导即是一种声音传递的方式&#xff0c;跟普通耳机不同的是传统耳机是通过空气将声音通过耳膜以此完成传递&#xff0c;而骨传导耳机的原理是将声音以不同…

网站如何改成HTTPS访问

在今天的互联网环境中&#xff0c;将网站更改成HTTPS访问已经成为了一种标准做法。HTTPS不仅有助于提高网站的安全性&#xff0c;还可以提高搜索引擎排名&#xff0c;并增强用户信任。因此&#xff0c;转换为HTTPS是一个重要的举措&#xff0c;无论您拥有个人博客、电子商务网站…

Chatgpt批量改写文章网页版可多开软件-自动登录换号生成word或者TXT

Chatgpt批量改写文章网页版可多开软件介绍&#xff1a; 1、改写后生成docx格式文档和生成txt文档二选一。 2、支持原来docx文档里带图片的改写&#xff0c;改写伪原创后的docx里也带图片。 3、软件可以设置是否开启标题改写&#xff0c;可以自定义标题改写指令。 4、可以设置…

创新驱动发展 国家创新型城市试点名单2006-2018年(已整理DID格式)

数据简介&#xff1a;创新型城市是指在经济、科技和社会方面具有卓越创新能力的城市&#xff0c;这些城市通过提供良好的创新环境和支持系统&#xff0c;吸引和培养创新人才&#xff0c;促进新兴产业发展&#xff0c;推动经济增长和社会进步。创新型城市提供了丰富的就业机会和…

YOLOV8 NANO手势识别

采用YOLOV8 NANO训练&#xff0c;得到pt模型&#xff0c;然后转换成ONNX模型&#xff0c;OPENCV DNN调用&#xff0c;支持C,PYTHON,ANDROID开发。CPU每帧20MS左右&#xff0c;可以达到实时性 YOLOV8NANO手势识别

Vue纯CSS实现掷色子

效果图&#xff1a; 实现代码 直接利用CSS3动画实现的效果&#xff0c;无js代码。 <template><div class"wrap"><input type"checkbox" id"roll"><label for"roll"><div class"content"><…

Http代理与socks5代理有何区别?如何选择?(一)

了解SOCKS和HTTP代理之间的区别对于优化您的在线活动至关重要&#xff0c;无论您是技术娴熟的个人、现代互联网用户还是企业所有者。在使用代理IP时&#xff0c;您需要先了解这两种协议之间的不同。 一、了解HTTP代理 HTTP&#xff08;超文本传输协议&#xff09;代理专门设计…

Uni-App 快捷登录

uniapp 实现一键登录前置条件: 开通uniCloud, 开通一键登录功能参考的文档 : 官网 - 一键登录uniapp指南 : https://uniapp.dcloud.net.cn/univerify.html#%E6%A6%82%E8%BF%B0 官网 - 一键登录开通指南 : https://ask.dcloud.net.cn/article/37965 官网 - unicloud使用指南 htt…

基于深度学习的植物识别算法 - cnn opencv python 计算机竞赛

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的植物识别算法 ** …

投资者如何保障个人利益?行业律师与欧科云链专家给出建议

香港作为全球加速拥抱Web3变革的引领之地&#xff0c;规定自今年6月起在香港经营虚拟资产服务业务需申领牌照。蜂拥而至的Web3创业公司&#xff0c;伺机而动的加密货币交易所&#xff0c;以及跃跃欲试的行业从业者&#xff0c;都让这座金融之都热闹非凡。但近期伴随JPEX诈骗案等…