【代码笔记】Java基础:类的继承(构造器)
- 在Java中,创建对象的格式为:
类名 对象名 = new 类名();
如:
1 JFrame jf = new JFrame();
- 一个对象被创建出来时,经常要先做一些事这个对象才能正常使用,也可以说是准备工作,比如给这个对象赋些初始值,或者先运行一些别的方法。这时候就需要一个“构造器”用于:
- 构造对象
- 初始化属性
这样,把那些在创建时要做的事写在构造方法里,每次创建就会被执行一遍。
- 我们常见的一种Java格式:
- public 返回类型 方法名(参数){ }
- 如:
public void study(){}
- 这在Java中称为“方法”。
- 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。
- Java中“构造器”,在C语言中一般称之为“构造函数/构造方法”。
- 其定义格式:
- public 类名 () { }
- 文件名:Teacher.java
public class Teacher {
String name; //构造方法,构造对象的时候执行
public Teacher(){
System.out.println("执行了老师类的构造方法");
}
public Teacher(String n){
name = n;
} //方法重载
public void teach(int a){
System.out.println("执行教学方法1");
}
public void teach(){
System.out.println("执行教学方法2");
}
public void teach(String n){
System.out.println("执行教学方法3");
}
public void teach(String n,int a){
System.out.println("执行教学方法4");
}
public void teach(int a,String n){
System.out.println("执行教学方法2");
}
}- 文件名:Test.java
import javax.swing.JFrame; public class Test {
public static void main(String[] args) {
//创建对象,调用构造方法
Teacher tea = new Teacher("李四"); Teacher tea1 = new Teacher();
tea.name = "张三";
tea1.name = "李四";
tea = tea1;
tea1.name = "王五"; System.out.println(tea.name);
System.out.println(tea1.name); }
}- 虽然是以“public 类名 (){ } ”的形式存在构造器中,不像创建对象有返回值类型(比如“void”),但其将返回一个内存地址。
- 在内存中,存储数据分为栈和堆。
- 栈存储变量,堆存储对象,其都有相应的内存地址。在执行构造器时,对数据进行初始化属性,相当于把对象的各项数据(所有的)存储到内存单元中,变量(如“tea”、“张三” )存到栈中,对象(如“name”、“Teach” )存到堆中。
- 上文“Test.java”的运行结果是输出:tea存入栈,name“张三”存入堆,都有自己的内存地址。
- “王五
- 王五”
- 执行 “tea = tea1”时,相当于把tea1的内存地址复制给tea,tea指向的内容将全部变成tea所指向的内容,所以运行结果是两个“王五”。
- 在“Test.java”中,作为主函数 调用构造方法 “Tecaher”(文件:Teacher.java),在执行一次“ new Teacher(); ”操作时,调用一次构造函数。
Teacher tea = new Teacher("李四");上面可改写为:
Teacher tea;
tea = new Teacher("李四");此处构造器“Teacher ”只调用一次,及“执行了老师类的构造方法”只打印一次。
- 文件名:Student.java
public class Student {
public String name;
public int age; public void study(){
System.out.println("学生学习");
} } - 文件名:UnStudent.java
package com.huaxin.lesson0304; public class UnStudent extends Student{ } - 如上,称为类的继承。
- 定义:子类继承父类的所有的非私有属性和方法
- 格式 : public class 子类名 extends 父类名{ }
- “UnStudent.java”大学生继承“Student.java”学生的非私有性属性。
- 即凡是Student学生所有的公共的,大学生都具备。
【代码笔记】Java基础:类的继承(构造器)的更多相关文章
- Java:类与继承
Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...
- Java:类与继承(隐藏和覆盖的问题)
盒子先生金金 Java:类与继承(隐藏和覆盖的问题) Java:类与继承 Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不 ...
- 第31节:Java基础-类与对象
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...
- Java基础学习笔记七 Java基础语法之继承和抽象类
继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工, ...
- (转)Java:类与继承
原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...
- java基础知识总结--继承和接口
什么是继承?什么是接口?他们之间的区别和联系是什么? 什么是继承? 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能.多个类中存在相同属性和行 ...
- Java基础教程(18)--继承
一.继承的概念 继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...
- Java基础-封装和继承
@ 目录 Java基础知识(封装和继承) 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 ...
- java基础---类和对象(4)
一. static关键字 使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,整个类共享一份静态成员变量,该成员变量随着类的加载准备就绪,与是否创建对象无关 使用st ...
- java基础---类和对象(3)
一.Object类 java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类 如果定义一个Java类时没有使用extends关键字声明其父类,则 ...
随机推荐
- [WebShow系列] 固定展示界面的现场调用
正在制作......,敬请期待. 固定展示界面的现场调用 现场管理员通过现场控制台可以控制主展示界面,实现 主题 所选选手展示 所选选手打分展示 排行展示 详情排行展示 柱状图展示 界面的展示切换外, ...
- 20165224 陆艺杰 Exp5 MSF基础应用
用自己的话解释什么是exploit,payload,encode Exploit是攻击的行为 Payload是一段植入目标机的简短的带功能的恶意代码 Encode是编码,用于更改恶意代码,编码特征码检 ...
- github提交项目
1.建立git仓库 在GitHub上先新建一个仓库. 新建一个文件夹 cd git clone https://github.com/xxxxxxx/xxxxx.git 3.把你的项目拖进去,cd 进 ...
- 005 Genymotion模拟器的使用和逍遥模拟器的使用
1.Genymotion模拟器 (1)Genymotion Device Manager的图标 重启软件Android Studio后,选择菜单栏“View--Toolbar”,让工具栏显示出来,可以 ...
- 打开页面时就提交,可以做一些自动登陆 还有SICLOGIN的测试代码
<HTML> <head> <title> Untitled Document</title > (1)自动提交表单: <meta http- ...
- Tensorlflow-神经网络解决非线性回归问题
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt #使用numpy生成200个随机点,范围从-0.5到0 ...
- UVALive - 4682
/*H E A D*/ struct Trie{ int son[maxn<<2][2]; int b[67],tot; void init(){ // memset(son,0,size ...
- java获取缓存通用类
1 class JedisHelper { public static <T, R> T getBySecond(String cacheKey, int seconds, R p, Fu ...
- 我所理解的session_set_save_handler的执行顺序机制
默认的session handler启动顺序 <?php ini_set('session.gc_maxlifetime',10); ini_set('session.gc_probabilit ...
- 给JFinal添加 Sqlite 数据库支持
[转自] http://my.oschina.net/u/237078/blog/69934 Sqlite 的单文件便携性.高性能在开发中方便性无与伦比,即使部署在中小型应用中也胜任有余. 在JFin ...