• 在Java中,创建对象的格式为:

类名 对象名 = new 类名();

如:

1 JFrame jf = new JFrame();
  • 一个对象被创建出来时,经常要先做一些事这个对象才能正常使用,也可以说是准备工作,比如给这个对象赋些初始值,或者先运行一些别的方法。这时候就需要一个“构造器”用于:
    1. 构造对象
    2. 初始化属性
      这样,把那些在创建时要做的事写在构造方法里,每次创建就会被执行一遍。
  • 我们常见的一种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基础:类的继承(构造器)的更多相关文章

  1. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

  2. Java:类与继承(隐藏和覆盖的问题)

    盒子先生金金   Java:类与继承(隐藏和覆盖的问题) Java:类与继承   Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不 ...

  3. 第31节:Java基础-类与对象

    前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...

  4. Java基础学习笔记七 Java基础语法之继承和抽象类

    继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工, ...

  5. (转)Java:类与继承

    原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...

  6. java基础知识总结--继承和接口

    什么是继承?什么是接口?他们之间的区别和联系是什么? 什么是继承? 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能.多个类中存在相同属性和行 ...

  7. Java基础教程(18)--继承

    一.继承的概念   继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...

  8. Java基础-封装和继承

    @ 目录 Java基础知识(封装和继承) 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 ...

  9. java基础---类和对象(4)

    一. static关键字 使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,整个类共享一份静态成员变量,该成员变量随着类的加载准备就绪,与是否创建对象无关 使用st ...

  10. java基础---类和对象(3)

    一.Object类 java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类 如果定义一个Java类时没有使用extends关键字声明其父类,则 ...

随机推荐

  1. 公共子序列(luogu P1439)

    传送门 题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最 ...

  2. 5.js与jQuery入口函数执行时机

    js与jQuery入口函数执行时机区别: JS入口函数是在所有资源加载完成后,才执行.(包括:页面.外部js文件.外部css文件.图片) jQuery入口函数,是在文档加载完成后就执行.文档加载完成指 ...

  3. js 伪数组 arguments

    /* 定义一个函数,如果不确定用户是否传入了参数, arguments可以获取到函数传入了多少个参数 和每个参数的值 */ /* 定义 */ function f1() { //获取的是函数在调用的时 ...

  4. 24.Letter Combinations of a Phone Number(电话号对应的字符组合)

    Level:   Medium 题目描述: Given a string containing digits from 2-9 inclusive, return all possible lette ...

  5. 蠕虫Worm virus

    美国CORNELL大学研究生莫里斯编写的蠕虫病毒 蠕虫病毒是一种常见的计算机病毒.它是利用网络进行复制和传播,传染途径是通过网络和电子邮件.最初的蠕虫病毒定义是因为在DOS环境下,病毒发作时会在屏幕上 ...

  6. Foremost恢复Linux中已删除的文件

    Foremost 我们只能在Linux中恢复已删除的文件,只要这些扇区在硬盘上没有被覆盖. 首先安装 要在CentOS上安装Foremost,我们将从官方网页下载并安装最前面的rpm.打开终端并执行以 ...

  7. 【算法笔记】B1015 德才论

    1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君 ...

  8. java.math.BigDecimal cannot be cast to java.lang.String

    从数据库总查询出的count(*) 函数统计的值,类型转换方法: Map<String,Integer> map = new HashMap<String,Integer>() ...

  9. 2018acm-icpc青岛站心得

    今年总共两场区域赛,一场南京,一场青岛.南京场队伍真正开始磨合,虽然最后还是铜牌,但是和银牌队伍其实只差一个计算几何的板子的问题.而鉴于南京的教训,所以在准备青岛站的时候,我准备了非常多的模板,还和派 ...

  10. npm install时 报错Maximum call stack size exceeded

    给npm降级或者升级 降级 : npm install -g npm@5.4.0 升级 : npm install -g npm  升级到最新版