Java培训学习 --面向对象

概念知识

2.特殊值

0 0.0 -0.0 -无穷大 无穷大 NaN

  int  i=0;

   double a1=-0.0;    //不管是 0、0.0  -0.0 双等号比较就是比较数值大小

   double a2=+0.0;

   a1=1/0.0;       //结果为Infinity     

   a1=1/-0.0;       //结果为-Infinity       

    a1=0/0.0          //结果为NaN   

3.取整

Math.ceil           向上取整 得到的是double类型

Math.floor         向下取整   得到的结果是double类型

Math.round     四舍五入取整    如果传入double  返回long类型

                                                 如果传入float      返回值为int

                                                   加0.5向下取整

4.可变参数

约束1: 数量可变 类型不能变

约束2:一个方法中最多只有一个可变参数,并且可变参数必须放在参数列表最后

static void method( int ...a){                    //定义一个方法
}

static void method(  int ...a,int i){           //语法错误
}

可变参数的使用:

static void method (double...i){
  System.out.println(i.length);
    System.out.println(i[0]);
}

2.面向对象

1.类:用来描述具有相同特征(属性)和相同行为(方法)的对象

Java中用 class关键字来描述类;

2.定义类:就是定义类中的成员,成员变量和成员方法。

成员变量:和之前变量的一样,成员变量位于类中,任何方法之外。

成员方法:把static关键字去除掉,没有加就是每个对象所具有的行为。

对象:

对象Object是构成系统的一个基本单位;

创建对象:

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

使用对象:

对象名.成员变量

调用成员方法:

对象名,方法名(参数列表);

先定义类,才能实例化对象

 在本类中可以直接调用本类中声明的属性

2.变量的作用域

全局变量(成员变量):

  • 定义在方法的外部,类的内部,使用范围是整个类中
  • 不需要初始化
  • 存储在堆内存中,(对象存在时才存在)

局部变量(方法中的变量):

  • 定义在方法的内部或者某一个语句块的内部,适用范围限于方法内或语句块中
  • 必须初始化
  • 存储在堆内存中

3.this变量

存在就近原则

在方法中调用类中属性name,就要用到this标注使用的属性变量

class Person{                            
    String name;           
    String sex;
    int age;

 void eat(){

 String name="aaa";      //方法中也声明一个name

 System.out.println(this.name+"正在吃饭");     //this标注使用的属性变量

  }
}

成员方法:

  • 语法

访问修饰符 返回值类型 方法名称(参数列表){

方法体

}

  • 访问权限修饰符:public    protected     dafault     private
  • 返回值类型由返回值决定
  • 成员变量可以直接在成员方法中使用,但是main方法中如果调用成员变量和方法必须通过对象.属性名\方法名给(参数列表)的形式来调用
  • 成员方法之间的调用,直接写方法名(参数列表)即可

1.public 公共的

public修饰类的时候注意点:

1.在类文件中只能有一个public类,并且这个类必须和文件名一致.

2.main方法必须写在public类中.

2.private 私有的

只能在自身类中访问到

3 default  本包下的

在类当中 是不可以写 default 默认也不可可以写

本包下的类默认可以访问本包下所有的类。

default 的访问范围是本包下的 出了包就访问不到

引入包.import. 包名.类名

为什么要引入包:

本类下默认使用本包下的所有的类。

经常使用包下的类

import. 包名。*

如果一个类中要使用两个重名的类型,需要使用类的全名来标注;

例:com.easy1.Easy1 ee=new com.easy.Easy1();

所有的类默认引入Java.lang包

Java.lang包声明了最常用最基础的东西,不需要我们引入

4.protected 受保护的

不在本包下 ,并且没有继承关系,就访问不到

本包下除了private 都可以访问

不同包下 default  访问不到

2.3面向对象的特征

封装 :属性私有化并且提供公共的访问方法

private int size=0;//封装起来
    private int [] value=new int[16];//封装起来
    //提供一种方法来读取数据
    public int size(){
        return this.size;
    }

并不是所有的封装都需要 getter/setter

继承:

程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系

  • 继承的特点:

继承要有一定的层次结构,还有具有一定的可传递性

子类继承了父类的所有方法和属性,但不包括私有属性和构造方法

子类也可以有自己的属性和方法

Java只支持单继承,也就是说一个子类只能有一个父亲,父类可以有多个子类

  • 继承可见减少代码重复,提高了复用性和维护性
  • 继承让类于类之间产生了关系,类的耦合型增加了,父类发生变化子类也会跟着变化。

//子类继承父类()

public static void main(String[] args){

B b=new B();

System.out.println(b.surname);

b.test();//子类继承父类,子类就具有了父类中定义好可继承的属性和方法

}

class A{

String surname;

void test(){}

}

class B extends A{

}

继承中的构造方法:

格式:

访问修饰符 方法名称(参数列表){

方法体

}//构造方法没有返回值类型,构造方法名和类名必须一致。

创建有继承关系的子类对象时,会执行父类中默认的构造方法,然后执行子类中相关的构造方法。

作用:初始化对象

每个类,系统会自动提供一个无参构造方法

public class Dkk {
String name;


public Demo(String name){

this.name=name;

 }//构造方法

public static void main(String[] args){
Demo demo=new Demo();//这时就会报错,一旦定义了构造方法,
                      //系统默认的构造方法就会不存在

}

}

super关键字:

  • 表示当前类的父类的调用
  • 只能出现在有继承关系的子类中
  • super两种用法:

          1. super.属性名、super.方法名(参数列表)

              表示父类的属性和方法,和子类中属性或方法重名时使用

           2.super(参数列表)

             子类继承父类 子类在执行构造方法的时候第一行默认是调用

              父类的构造方法(系统自带)父类没有无参构造方法,子类必须定义构造方法        

              即子类的第一行必须调用父类的无参构造方法

Son(){

super("");

}

方法的重载:方法名一样,参数列表不一样

  • 一个类中方法名一样即为重载(不管返回值是否一致)
  • public String test( int a,double b){ return"";}
  • public void test( int a){ return"";}

只能通过参数列表来区分:参数类型、参数数量、参数顺序

方法的重写

定义:子类对父类中继承过来的方法进行重新定义

  • 当父类中的方法无法满足子类的需求,子类可以对该方法进行重写
  • 必须和父类的方法名,返回值,参数列表完全相同,并且访问修饰符的范围不能变小

@Override对是否重写进行注解

多态:

  • 把父类对象指向子类对象的引用,就是把子类对象当作父类对象来使用
  • 他可以调用父类中所有的成员属性和方法,(但不能在调用子类自己的属性和方法)
  • 如果子类中有重写了父类的方法,那么执行这个方法时一定执行子类的重写方法

向上转型

  • 多态本身就是子类类型像父类类型向上转型的过程
  • 将子类对象转换为 父类对象就是向上转型(自动转换)

父类类型 对象名=new 子类类型();

  • 可以使用更高级的指针指向子类的对象;
  • 向上转型的对象可以调用父类中所有的普通方法和成员变量,但是只能调用子类中重写的方法

public void test(){

Son s=new Son();

//向上转型

Parent p=new Son();

p=new Son2();//Parent的另一个子类

}

public void demo(Parent p){

p.test();//向上转型调用父类中的方法

}

public static void main(String[] args){

Parent p=new Parent();

demo(p);

}

(大飞机小飞机都是飞机)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值