java--基础语法集合

面向对象(Object Oriented)
Java中一切皆对象
面向对象的编程思想更符合人的逻辑思维
对象与类
对象:现实世界中存在的具体事物
类:现实世界中某类事物的统称
站在一个分类学家的角度看待世界,
用class关键字用来修饰某一种类型的事物

对象是类中的一个具体实现,对象是类的特化
类是从某些事物中抽象出共性,类是对象的泛化

练习:定义一个二维坐标中的点类
Java中点类的书写:
class Point{
int x;
int y;
}
原点:是一个二维坐标中具体的点
x=0,y=0
原点是点类的一个具体实现,原点是点类的一个对象

引用类型的变量是指变量中存储的不是具体的值而是内存中的一个物理地址
Point p = new Point();
关键字new
1.用来调用构造方法,
2.创建对应类型的对象并返回,
3.在内存中开辟对象存储的空间
4.将对应对象的属性初始化为零值
构造方法
是一种用来描述对象创建过程的特殊方法

1.构造方法中的参数是创建当前对象所必须的属性值
2.构造方法方法名称与类名同名,没有返回值也不用void声明
3.如果类中没有声明构造方法,编译器默认提供无参的构造
4.如果类中声明有构造方法,那么编译器不会在提供无参构造
方法的重载(overLoad)
在同一个类中两个方法方法名称相同,参数列表(参数个数,参数类型)不同叫方法的重载。
方法重载跟方法的返回值没有关系
方法重载也叫行为多态

this关键字
表示当前类的对象
this.属性 表示当前类对应的成员变量
this.方法 表示调用当前类对应的方法

面向对象特点:抽象,封装,继承,多态
抽象:将现实生活中某一些事物的共性抽象出来形成类

继承:程序的扩展和延续,模拟现实生活中的遗传
父类(超类):被其他类继承的类叫父类
子类:继承其他类的这种类叫子类
1.子类继承父类通过extends关键字来实现
2.子类继承父类将会继承父类中所有非私有化的属性和方法
3.子类在继承的过程中能够定义自身特有的属性和方法,是对父类的进一步扩展和细化
4.构造方法不能继承
5.继承过程中子类在创建对象过程中会递归的调用父类的构造为所有父类声明内存空间 
6.一般建议重载构造方法时,提供默认的无参构造。
7.子类构造器中默认第一行调用父类的无参构造。

继承过程中的现象
1.父类类型的引用可以指向子类类型的对象
//父类引用指向子类对象
Animal a = new  Bird();
Bird b = new Bird();
父类引用a所能够访问到的属性和方法都只是父类类型中声明的,
访问不到子类中自定义的属性和方法

如果引用要访问子类中的属性方法必须强制类型转换
//将父类引用强转成子类引用,
//那么子类引用就能够访问子类中自定义的属性和方法
Bird bb = (Bird)a;
bb.fly();

//强制类型转换,转换类型不匹配会
//ClassCastException 类型转换异常
//Dog d = (Dog)a;

//没有继承关系的两个类型强转会编译错误
//Point p = (Point)a;
2.子类继承父类能够继承父类中定义的非私有化的方法,
    那么子类可以对父类中定义的方法重新实现,这种现象叫方法的重写(override)
    方法重写也是行为多态中的一种

访问控制符
public   protected  default(缺省的)  private
public   当前类,同包,不同包的子孙类,其他类都可以访问
protected 当前类,同包,不同包的子孙类可以访问,其他类不可以访问
default  当前类,同包可以;不同包的子孙类,其他类都不可以访问
private 当前类可以可以访问;同包,不同包的子孙类,其他类都不可以访问

super关键字
表示当前类的父类的引用对象
super.属性名称   访问父类属性
super.方法名称   访问父类方法
通过super访问父类的构造方法
super(参数) 调用父类构造

public Bird(){
//显示的调用父类的有参构造
super(200);
System.out.println("一只鸟出生了");
}
注意:在子类构造器中调用父类构造器必须书写在子类构造器的第一行

instanceof关键字
判断一个对象是否是某个类的实例(对象)
Bird b = new Bird();
Animal a = new Bird();
if(a instanceof Bird){}

封装性
将类中定义的属性私有化,提供公共的访问方法
为什么封装?
屏蔽类中具体的实现,降低访问类的复杂性,提高类中具体实现的安全性

私有化属性
private int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}

boolean类型
public boolean isWing(){
return this.wing;
}
提供Getter/Setter方法访问私有属性

多态性
多种表现形态
分为引用多态和行为多态
引用多态:Animal a = new Dog();
行为多态:方法的重载,方法的重写

final关键字
表示最终的
1.final修饰的类表示此类不能被继承。
String类,Math类,包装类
2.final修饰的方法表示此方法不能重写 (能够重载)

3.final修饰的变量,不能被改变,并且要在声明的时候初始化
final可以修饰局部变量,修饰的局部变量可以不在声明的时候初始化

建议:不要将类修饰成final的,不便于类之间的继承和扩展

public void setAge(final int age){
this.age = age;
}

static关键字
静态的,采用static修饰的是在类加载进内存的时候执行初始化并且 
整个程序的执行过程中只会初始化一次。

static修饰的方法是类级别的方法,可以直接通过类名.方法名称调用
不依赖对象的存在而存在
static修饰的方法中不能调用非静态的成员变量
static修饰的方法中不能调用非静态的方法
static修饰的方法不能使用this关键字,不能使用super关键字

static修饰的属性是类级别的属性,可以直接通过类名.属性名称访问
静态属性是所有对象所共享的
通过public static final 来修饰一个变量那么这个变量是常量
常量:不会改变的量,常量名称一般大写
public static final AGE = 18;
Math.PI

static修饰的代码块,会在类加载进内存的时候执行
应用不是很多,一般在静态代码块中做资源加载以及初始化的工作

练习:
1.有一只猫在追一只老鼠。刚开始时两者之间相差的距离为10,
现在已经知道猫的速度为6米/每秒, 老鼠的速度是5米/秒,
请问多少秒之后猫追上了老鼠。(10分)
提示:
1)、猫类:有一个属性为速度。并有一个方法跑
2)、老鼠类:有一个属性为速度。并有一个方法跑
3)、测试类中计算出结果
2. 商店的购物中心为酬谢广大客户,推出礼品馈赠活动:
凡具有一定数量积分的会员可以获赠送礼物,循环输入会员的积分,
用面向对象的思想实现礼品馈赠。(共计10分)
积分 礼物
800<=x<15000 诺基亚N73手机
X>=15000 苹果笔记本电脑



抽象类
1.抽象方法:方法只有声明,没有方法的具体实现
用关键字abstract修饰
 public abstract void run();
2.含有抽象方法的类一定是抽象类,用关键字abstract修饰
3.抽象类不一定含有抽象方法
4.抽象类不能创建对象,但是可以创建抽象类的引用
5.子类继承抽象类必须实现抽象类中定义的所有抽象方法
6.抽象类中能够定义非抽象方法,在抽象类中非抽象方法能够调用抽象方法
7.抽象类可以继承抽象类也可以继承普通类

接口
接口是一个特殊的抽象类,接口中只有抽象方法,没有其他的普通方法
采用interface来声明接口
1.接口中的方法都是抽象方法,一个方法不写abstract默认系统会将方法提供abstract
2.实现一个接口必须实现接口中定义的所有方法
3.接口中定义的成员变量一定是常量
4.接口不能创建对象,但是可以创建接口类型的引用
5.接口不能继承类,但是接口之间可以相互继承
6.类只能继承一个父类但是可以同时实现多个接口,多个接口之间以逗号分隔



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值