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,一经查实,立即删除!

相关文章

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

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

Keep-live 用法

是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。 include-字符串或正则表达式,只会匹配的组件会被渲染exclude-字符串或正则表达式,任何匹配的组件都不会被缓存用法注:当组件被exclude匹配&#xff…

沉痛悼念科研分公司

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

利用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;选择器和…

【ArcGIS Pro二次开发】(73):使用NPOI库操作Excel

NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。 NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 相较于之前使用的Microsoft.Office.Interop.Excel&#xff0c;已经感觉到的优势&#xff0c;一是读写速度较快&#xff0c;虽然小数据量的读…

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

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

Vue 打包优化之 externals 抽离公共的第三方库

Vue 打包优化之 externals 抽离公共的第三方库

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

摘要&#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…

GNU ld(链接器)的主要功能

作用&#xff1a; 链接器linker是Bintutils的一种重要工具&#xff0c;负责将编译后的目标文件(.o)合并成一个可执行文件或者共享库。 一、链接器的文件结构可以概括为以下几个关键部分&#xff1a; 输入文件 (Input Files): 输入文件通常是目标文件&#xff08;.o 文件&#…

源码配置nginx,分别编写基于RHEL6、RHEL7的脚本

配置nginx 安装软件 [rootlocalhost ~]# wget https://nginx.org/download/nginx-1.20.2.tar.gz [rootlocalhost ~]# ls 公共 视频 文档 音乐 anaconda-ks.cfg 模板 图片 下载 桌面 nginx-1.20.2.tar.gz创建系统用户 [rootlocalhost ~]# useradd -r -M -s /sbin/nol…

销售人员拒绝CRM系统的原因?如何解决?

尽管如今的CRM客户管理系统已经足够的轻量化&#xff0c;实施起来并不复杂&#xff0c;但还是会被销售团队抱怨&#xff0c;认为CRM系统和他们想象的有很大差距。甚至销售团队根本不理睬新的CRM系统直接拒绝使用。那么&#xff0c;销售人员拒绝CRM系统的原因是什么&#xff1f;…

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;无论您拥有个人博客、电子商务网站…

面试流程之——程序员如何写项目经验

在简历中介绍IT项目经验&#xff0c;你可以遵循以下步骤&#xff1a; 明确项目目标&#xff1a;首先&#xff0c;清晰地阐述项目的目标。这可以是提升某个软件的性能&#xff0c;改进某个系统的用户界面&#xff0c;或者增加某款产品的功能。让读者了解你的工作与项目的整体目…

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

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