一直说学习需要总结,需要写博客,自己懒=.= 一直没写。记录一下自己学习的知识和问题吧。
我已经看过视频学过javase了 写这个博客是在重新看书记录每天所学 做一个总结和记忆吧。也是对基础的重新巩固。视频看得多了 基础知识会比较薄弱 所以重新看书。
java是面向对象语言,对一个类的定义 包含三种最常见的成员:构造器,成员变量,方法。
注意:方法 成员变量 构造器 必须依赖类的存在才存在。
例如
public class Demo
{
String str="构造器,成员变量,方法"; //此行为一个String类型的 变量名为str的成员变量str
int a;
public Demo() //这里是一个Demo的对象的构造器 当使用Demo d=new Demo() ;时 可以理解为此构造器返回了一个Demo的对象d。此构造器内什么都没有写
//即默认什么都没干 如果在一个类中 并没有写构造器 则java会自动增加一个默认构造器 即这个没有参数的构造器,此构造器不写也行。
{
}
public Demo(int a) //这里的构造器需要一个int 类型的参数a,当我们使用这个构造器来创建对象时,如下 Demo d2=new Demo(2); 就需要这个int类型的2 进行初始化。
{
this.a=a; //这里涉及到this的用法 见注释1 @注释1
}
public Demo(int a,String str2) //这里的构造器需要int类型的参数a和String类型的str2 例:Demo d3=new Demo(2,"这个构造器创建的对象会对他的成员变量str进行修改");
{
this(a); //这里使用了我们上面一个构造器 也使用了this。
this.str=str2; //这里将本来的成员变量str重新赋值为str2;
}
public void sop(Demo d) //这里写了一个方法 为public权限 无返回值 方法名为sop的方法 需要传递一个Demo对象。@注释2 涉及到修饰符,见注释2
{
System.out.println("str ="+d.str+"__"+"a="+str.a); 这里打印Demo类的d对象的str和a成员变量
}
public void sop(String str,int a)
{
System.out.println("str="+str+"__a="+a); //这里又写了一个同方法名的sop方法 唯一的区别是参数不同,这样的叫重载。
}
}
对于这个类我们需要了解构造器写法 成员变量的位置 以及方法的写法还有this的用法 重载。对于类在内存中的样子 会单独写一篇 。
/*注释1 this的用法 :
构造器中引用该构造器正在初始化的对象
在方法中引用调用该方法的对象
*/
/*
注释2 修饰符
分为public final abstract
public:如果使用此修饰符 则修饰的方法最“不要脸“ 只需要创建一个此方法的对象就可以被随意调用 (开了个玩笑).
final:字面意思为最后的 它修饰的话 则意味着不能被继承 更改。
abstract:字面意思为抽象 还没有看到=.= 后面再说。
*/
面向对象语言有三个面向对象的特征 分别是:封装 继承 泛型。
封装:封装的优点很多 首先我解释一下封装的含义,简单来说,就和你的电脑一样 电脑设计时 对于用户来说 只需要暴露键盘,鼠标给用户使用就行,而内部的主板,显卡,cpu,散热器则用机箱封装起来,不让这些暴露给用户,因为对于用户来说 我只需要能用鼠标点,用键盘敲来上网,玩游戏等实现这些目标就行。主板,显卡,cpu等就是封装起来的,不需要用户关注的地方。
那么怎么使用封装呢?必须说一下访问控制符了 java中提供了3个访问控制符外加一个不加任何访问控制符的访问控制级别 见下图。
private | default | protect | public | |
同一个类 | √ | √ | √ | √ |
同一个包 | √ | √ | √ | |
子类中 | √ | √ | ||
全局中 | √ |
这里我写一个Test类和一个TestDemo类来展示一下封装
public class Test
{
private int x; //这里我用private来修饰x 对照上面的表格 这个int类型的x只能在这个类中调用 其他类中就算创建了一个这个对象 也无法直接操作这个变量。
public Test()
{
x=5;
}
public void setX(int x) //这里给了一个公开的方法 我想更改这个对象的x的话 就可以调用这个方法更改这个x。
{
this.x=x;
}
public int getX() //调用这个方法可以得到这个对象的x值。
{
return x;
}
}
public class TestDemo
{
public static void main(String[] args)
{
Test t=new Test();
System.out.println(t.x); //打印对象t的x
t.setX(10); //设置t 的x为10
System.out.println(t.getX()+" "); //打印t 的x
}
}
继承:通过关键词extends实现
class father
{
public void sop()
{
System.out.println("这是父类");
}
}
class son extends father
{
public void sop()
{
super.sop(); //调用父类的sop方法
}
public void sop(String s)
{
System.out.println(s); 重写了父类的sop方法。
}
}
未完待续。。。
//没想到写博客需要那么久的时间(= =)|||