Day2

进度

又是小半天的学习,原本准备快速入门的,但假期,还是多快乐快乐吧。今天是把面向对象看完了,因为我有学习c++面向对象的经历,所以,学起来还算比较自在。

感受与思考

1.java的可变参数,是第一次看到这种用法。在之前的语言学习中都没见过。(int ...i),个人的感觉像是将参数换成了一个vector数组之类的东西,而且这个i确实也是当数组用的。里面的值也能更改。

day2_c++

2.java的面向对象跟c++基本是相同的,毕竟面向对象就是一种思想。java的访问权限也与c++相同。不过不同的是,它的关键字(public等)只能用来修饰一个变量/方法。

//java
public class Student{
private int age;
private String name;
}
//c++
public class Student{
private:
int age;
string name;
}


3.继承肯定是要提到的,java只能单继承,用的是关键字extends。

package Demo;

class p1{
private String name;
private int age;
public p1(String name1,int age1){
name=name1;
age=age1;
}
public void Print(){
System.out.println(name);
System.out.println(age);
}
}

class p2 extends p1{
private int money;
public p2(String name1, int age1,int money1) {
super(name1, age1);
money=money1;
}
public void get(){
super.Print();
System.out.println(money);
}
}
public class Demo5 {

public static void main(String[] args) {
p2 p22 = new p2("张三",18,1000);
p22.get();
}
}


super

super只会以super./super(...)的形式出现,一个是调用父类的方法,一个是父类的构造函数。第二个肯定是会有的,因为毕竟是从父类继承来的。如果之前学了this指针(当然,java没有指针),应该很好理解。this是当前类,那么super就是父类。这多写几遍就行。

方法重写

静态方法:只和左边定义的数据类型有关
非静态:重写

//静态
package Demo;

class p3{
public static void text(){
System.out.println("执行p3");
}
}

class p4 extends p3{
public static void text(){
System.out.println("执行p4");
}
}

public class Overwrite {
public static void main(String[] args) {
p3 a = new p4();
p4 b = new p4();
a.text();
b.text();
}
}

//非静态
//把static不写就行


多态

跟c++的面向对象不同,c++是用虚函数来实现多态,java好像是用静态方法(不知道是不是对的,如果是错的,还请指正)

package Demo;

class father{
public static void test(){
System.out.println("father");
}
}

class son extends father{
public static void test(){
System.out.println("son");
}
public void test2(){
System.out.println("lalala");
}
}

public class Demo6 {
public static void main(String[] args) {
father p1 = new son();
son p2 = new son();
p1.test();
p2.test();
((son) p1).test2();//强制类型转换
}
}


抽象类

c++用的virtual,java用的abstract

package Demo;

abstract class p5{
public abstract void text();
}


class p6 extends p5{
@Override
public void text() {
System.out.println("lalala");
}
}

public class Demo7 {
public static void main(String[] args) {
p6 h = new p6();
h.text();
}

}


小结

如果说c/c++写的是一个个cpp文件,那么java中所需要写的就是一个个类,这点很不一样。学起来还是比较容易上手
今天也没完全学完,还剩了点尾巴,准备找时间结尾,应该是在这篇随笔后了,所以就不记录了。