java培训(5-8节课)

面向对象:
  1.利用面向对象的语法,实现代码的拆分(数据存储:对象的传值)。
  2.利用面向对象的语法,实现程序的结构处理(继承,多态,接口,抽象类)。
  3.用面向对象的编程方法,理解实现程序开发的框架和开发模式。

  面向过程:代码与数据不相关,通过主函数确立

  

  面向对象:在定义类的时候,数据代码关联,把函数写在类内,而不是主函数内,最终目标是类拿过来就能用

  

学籍信息管理:(课上示例)
  管理的数据:班级,学生,老师(授课,班主任)。
  1.计算学生的考试成绩,需要补考的人数。
  2.计算出教师或学生的身高体重是否正常。

Java中的注释:
  单行(//注释内容),多行(/*注释内容*/):写在类中,函数中。
  文档注释(/**文档注释内容*/):定义在类中。有助于程序编写(生成帮助文档 doc文件,系统提示)

  项目——>右键——>导出(export)

Java中数据类型转换方式:
  基本数据类型之间转换:自动转换(值的大小小于被赋值变量大小),强制转换(值的大小大于被赋值变量大小)。
  复合数据类型之间转换,或复合数据类型和基本数据类型之间转换:使用数据类型转换的函数。
  Integer.toString();整型--->字符串
  Integer.parseInt();字符串--->整型
  Double.toString();浮点--->字符串
  Double.parseDouble();字符串--->浮点

Java类的定义:公有的,默认的。

  •   成员变量(属性):数据存储,数据结构维护。
    • 访问权限:公有的,私有的,受保护的,默认的。
    • 存储方式:默认的(动态存储),静态存储,只读存储,等。

      动态存储:默认的。在创建一个对象时,该成员变量,存储堆区。且创建的每一个对象都独立使用一块内存空间。
        对于此成员变量的访问只能通过对象名。
      静态存储:在定义成员变量时,加入static关键字。该成员变量在程序时,就已经存储在全局数据区,其创建不依赖于对象的创建。
        故,静态成员变量只有一个,被多个对象所共享。既可以通过对象名引用也可以通过类名引用(系统推荐通过类名)。

    • 数据类型:
  • 成员函数(方法):对本类中多定义的成员变量的相关的操作。
    • 访问权限:公有的,私有的,受保护的,默认的。
    • 存储方式:默认的(动态存储),静态存储,只读存储,抽象,同步等。

      动态存储:只能通过对象名称来调用。
        为动态成员变量服务的(一般都是写操作动态成员变量的代码,当然在其中也可以出现静态成员变量的访问)。
      静态存储:通过类名或对象名称来调用(推荐使用类名)。
        为静态成员变量服务的(只能写操作静态成员变量的代码)。

    • 函数的定义格式:返回值,函数名称,参数列表:

      函数在一般情况下,遵循先定义后使用的原则。
      函数的定义:参数叫做形参(只能变量,接受数据。占用内存空间)。
      函数的调用:参数叫做实参(变量,常量,表达式,发送数据的)。
        因为变量的作用域不同,需要在主调函数向被调函数传值时,需要通过参数。
      参数的传参的方式:
        值传递:参数的数据类型为基本数据类型时,都是值传递。
        地址传递:除了基本数据类型,都是地址传递。
        在被调函数向主调函数返值时,需要通过参数的地址传递或函数的返回值。

    • 函数重名:多态性。

      1.不同类中同名函数:在调用时通过类名或对象名区分调用的函数具体哪个函数。
      2.同一个类中同名函数:函数的重载。
      函数的重载规则:函数名相同,但函数参数的类型,个数,顺序,有一个不同。
        编译之前:
        void aa();
        int aa(int i);
        int aa(char i);
        String aa(int i,int j);
        String aa(int a,int b);
        String aa(int i,char j);
        String aa(char a,int b);
        编译之后:
        void aa();
        int aaint(int i);
        int aachar(char i);
        String aaintint(int i,int j);
        String aaintint(int a,int b);
        String aaintchar(int i,char j);
        String aacharint(char a,int b);
      3.函数重写:子类和父类中有同名函数,调用的是那个函数。

  • 构造函数:一般情况下访问权限是public,没有返回值,函数名称必须和类名同名,参数可以任意设定,也有函数重载。(java中乜有拷贝构造函数和析构函数)

    一个类可以存在多个构造函数,构造函数使用是在new创建一个对象时,自动调用的。某一个对象创建时,只能调用一个构造函数。
      构造函数创建:
      1.当在类中没有为其指定一个构造函数时,系统会为其自动添加一个构造函数,这个构造函数就做默认构造函数(无参数,无代码)。
        public 类名()
        {
          //默认构造函数
        }
      2.如果指定了类的构造函数,那么其默认的构造函数,系统将不会自动创建。
      3.构造函数不能显示调用,它是new对象调用,作用是用来进行对对象的初始化赋值。
        注意:创建一个对象时,先开辟内存空间,然后执行变量定义时赋值,最后才是执行构造函数赋值。
         final 作用于成员变量时,这个成员变量代表只读变量。只能在定义变量时,或构造函数中对其赋值一次。
          如果定义变量时赋值,在构造函数中就不能再次赋值(赋值一次,在new对象时)。
        this指针和this函数();
          this指针:代表本对象的内存地址。
          this函数:代表调用本类的其它构造函数。

类的定义习惯:
  1.动态成员变量私有访问权限,通过get,set方法来进行操作。静态成员变量直接定义公有的访问权限。
  2.定义两个构造函数(一个为无参构造函数,一个具有对该类所有成员变量进行初始化赋值参数的构造函数)

  Ctrl +A ——>Ctrl + I(界面美化)

  将很多行同时缩进:选中这些行 Tab(增加缩进) Shift+Tab (减少缩进)

  类成员 定义为私有——>选中函数——>右键——>Source——>getandset   (直接生成getName(),setName())

类的关系:组合(一个类包含另一个类,两个类分别创建实例),继承(一个类是另一个类功能扩展,只需要创建一个类实例)

  类的组合:

public class A
{
    public int i=10;
}
public class B
{
    public A a=new A();
    public int i=10;
}
public static void main(String arg[])
{
    B b=new B();
    b.a.i;
    b.j;
}

  

  类的继承:

public class A
{
    public int i=10;
}
public class B extends A
{
    public int i=10;
}
public static void main(String arg[])
{
    B b=new B();
    b.i;
}

继承特性:
  1.继承代码实现,继承的存储结构(和组合对比)。
  2.Java中所有的类彼此之间都有继承关系,所有类都继承Object类,将其称为基类。如果不手动设定一个类的父类,系统会默认其父类为Object类。
  3.一个类只能有一个父类(单一的继承),一个类可以有多个父接口(多重的继承)。
  4.在父类和子类同名成员变量。
    创建子类对象,其会先将父类的成员变量都创建出来,然后在创建其自己的成员变量。同名时,两个同名的成员变量分别占用自己的内存空间。
    对象名.成员变量、this.成员变量代表都是子类中的成员变量。在子类内部使用super.成员变量代表其父类同名成员变量。
    注意:子类不能直接查找其父类的父类的同名变量,需要通过其父类中转。
  5.super指针和super函数:super指针代表子对象中属于父对象部分内存空间的地址。super函数代表调用其父类的成员函数。
    如果在子类的够着函数中没有指定其调用其父类的哪一个构造函数,则系统默认调用父类的默认构造函数。否则,不再自动调用super函数。
  6.构造函数中:this函数和super函数,只能出现一个,因为这个函数的使用规则,都必须写在构造函数的第一行。

  7.在父类和子类同名成员函数。。。。

静态变量:存在于全局数据区,不以来于对象的创建

//班级类中 
        public ststc String no;
//主函数中 
        TClass.no = "001";——>通过类名引用(系统推荐)
       new TClass().no = "002";——>通过对象名引用        

形参占用内存(栈区,调用函数时即生成)

字符串占2块内存,一是地址,二是内容 null和空字符串是不同的

TClass() {no="";} 等价于 在外边定义时private String no = null;

创建一个对象时,先开辟内存空间,然后执行变量定义时赋值,再执行构造函数(构造函数防止空指针异常)

Object java中的亚当夏娃,是所有类的父类

public class A {int i=10;}
public class B {int i=20;}
输出  b.i = 20 

内存空间仍然存在,只是被自雷覆盖,内存结构如图

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值