复习JAVA(1)
毕业一年之后,因为工作的局限性,感觉对自己技术的提升不是很大,从今天起要开始重新学习JAVA,想从事与JAVA相关的技术性工作,希望自己不要浪费下班后的时间,将JAVA知识点重新梳理一遍,坚持每天下班敲代码。好久没用JAVA,做题过程中总会碰到阻断,所以准备先用一两周时间简单梳理一下JAVA最基础的知识点。
1.封装
为什么要进行封装?
比如下段代码:
class Person{
String name;
int age;
public void speak(){
System.out.println("我叫"+name+",今年"+age+"岁了");
}
}
实例化一个Person对象,赋值p.age=-18.执行p.speak;
这个语法上不会有问题,但是不符合生活实际,所以这个时候就应该对成员变量进行限定,不允许外界随意访问,对类进行封装。
如何进行都封装?
首先,将类进行私有化,使用private关键字来修饰,但是私有属性只能在类内使用,外界想要访问私有属性,那么就需要使用public方法。最常见的就是获取属性值的getXxx()方法和设置属性值的setXxx()方法。例子如下:
class Person{
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge{
if(age<=0){
System.out.println("您输入的年龄不正确")
}else{
this.age=age
}
}
public void speak(){
System.out.println("我叫"+name+",今年"+age+"岁了");
}
}
2.重载
为什么要进行重载?
写程序过程中,由于参数求和数字的个数和类型都不同,所以要针对不同的情况设计不同的方法。举一个例子如下:
public class Example{
//1.实现2个整数相加
public static int add01(int x,int y){
return x+y;
}
//2.实现3个整数相加
public static int add02(int x,int y,int z){
return x+y+z;
}
//3.实现2个小数相加
public static double add03(double x,double y){
retuen x+y;
}
public static voud main String[args]{
//针对求和方法的调用
int sum1=add01(1,2);
int sum2=add02(3,4,7);
int sum3=add(0.2,0.3);
//求和打印结果
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
System.out.println("sum3="+sum3);
}
}
从上面的代码可以看出,针对每一种求和的方法都要定义一个方法,如果每个方法名都不相同,那么调用的时候就很难分清调用哪个方法。所以java允许一个程序里面定义多个名称相同,参数不同的方法,这就是重载。
怎么进行重载?
对上面的方法进行重载,例:
public class Example{
//1.实现2个整数相加
public static int add(int x,int y){
return x+y;
}
//2.实现3个整数相加
public static int add(int x,int y,int z){
return x+y+z;
}
//3.实现2个小数相加
public static double add(double x,double y){
retuen x+y;
}
public static voud main String[args]{
//针对求和方法的调用
int sum1=add(1,2);
int sum2=add(3,4,7);
int sum3=add(0.2,0.3);
//求和打印结果
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
System.out.println("sum3="+sum3);
}
}
重载只需要满足方法名相同,参数个数或者参数类型不同即可;
3.重写父类方法
为什么要进行重写?
在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改以满足子类的实际情况,比如Dog类继承Animal父类的shout()方法,这个方法在调用的时候会打印动物的叫声,但是这个叫声不能描述一种具体的动物叫声,而Dog类对象表示犬类,发出的叫声应该是“汪汪”所以Dog类继承父类的时候可以重写父类的shout()方法,定义“汪汪”的叫声。
如何进行方法的重写?
注意点:
1:重写的方法名和参数类型必须与父类相同,参数值可以不同
2:子类权限必须大于等于父类权限
3:注解 @表示一下方法是重写方法
4:重写前可以使用Super调用父类方法,这样既保证父类功能,也可以拥有子类特有的功能。
5:不能重写父类的私有的方法
例子如下:
class Animal{
//定义动物的叫声;
void shout(){
System.out.ptintln("动物发出叫声");
}
//定义Dog类继承动物类
class Dog extends Animal{
void shout(){
System.out.println("汪汪.......");
}
}
//定义测试类
pubic class Test{
public static void main(String[]args){
Dog dog=new Dog();
dog.shout();
}
}